Bueno empecemos por lo que quiero hacer:tengo un arma en mi personaje 2d que se activa cuando se presiona un boton. Cuando presiono el boton el arma aparece y realiza un movimiento, este es como una rotacion en z. El problema es que la animaciion sola no hace nada asi que le tuve que agregar un trigger pero no se como hacer que el triger se mueva de cierta pocicion a otra(las cuales son -45 a 45). no encuentro una funcion que me permita rotar el triguer de cierta forma y desde tal angulo hasta otro. un ejemplo de esto es el secrets of grindea. Si buscan un video https://youtu.be/9hOWnPtpSbY?t=4m40s (//%5Byoutube%5Dhttps://youtu.be/9hOWnPtpSbY?t%5B/youtube%5D=4m40s). aqui esta el ejemplo. A lo que me refiero es como darle un movimiento predeterminado al trigger cuando yo presione una tecla. Perdon si no se entiende pero es que soy malo explicando
Vale, lo que quieres es que tu personaje ataque con su arma, haciendo un barrido, como en el vídeo del tío de la espada... Vamos por partes:
- El trigger no se debe animar, se anima el personaje (o brazo/mano de). Imagino que no lo estás haciendo por animación, sinó por código, lo de mover el brazo o mano.
- Siendo una animación de un sólo sentido (barrido de inicio a fín) te recomiendo hacer una animación del brazo que mueva la espada y haga ese barrido.
- Puedes separar dicho brazo y espada en un gameobject distinto, y a ese gameobject agregarle el trigger. Al mover el brazo, se moverá el trigger con él.
- Los triggers, como cualquier collider, no pueden rotarse, pero pueden moverse o escalarse. Si adaptas el trigger al filo de la espada, sólo la parte que corta será la que colisione..
- Si por algún motivo coherente, debes animar el collider, crear una animación y su animator controller es la mejor opción. Programar el comportamiento de un collider por código es poco recomendable.
- No, no necesitas cubrir el barrido entero con un collider. Basta con que siga la animación del brazo , y en algún momento de la animación seguro que colisiona contra algún enemigo, o lo que sea..
Si no has entendido casi nada de lo que te acabo de poner, tranquilo. Puedes incluir una captura de la escena de Unity, mostrando el personaje, su brazo, y su espada seleccionados, para entender mejor cómo lo tienes organizado.También podrías incluir el código que uses para tratar de hacer el barrido del arma, y enseñarte una forma mejor de hacerlo, siguiendo ese camino. Palabras clave necesarias, buscarlas por Google:
tween ,
ease in,
ease out,
sin,
cos,
movimiento circular.
Cita de: pioj date=1461328001" data-ipsquote="" data-cite="pioj" class="ipsQuoteVale, lo que quieres es que tu personaje ataque con su arma, haciendo un barrido, como en el vídeo del tío de la espada... Vamos por partes:- El trigger no se debe animar, se anima el personaje (o brazo/mano de). Imagino que no lo estás haciendo por animación, sinó por código, lo de mover el brazo o mano.
- Siendo una animación de un sólo sentido (barrido de inicio a fín) te recomiendo hacer una animación del brazo que mueva la espada y haga ese barrido.
- Puedes separar dicho brazo y espada en un gameobject distinto, y a ese gameobject agregarle el trigger. Al mover el brazo, se moverá el trigger con él.
- Los triggers, como cualquier collider, no pueden rotarse, pero pueden moverse o escalarse. Si adaptas el trigger al filo de la espada, sólo la parte que corta será la que colisione..
- Si por algún motivo coherente, debes animar el collider, crear una animación y su animator controller es la mejor opción. Programar el comportamiento de un collider por código es poco recomendable.
- No, no necesitas cubrir el barrido entero con un collider. Basta con que siga la animación del brazo , y en algún momento de la animación seguro que colisiona contra algún enemigo, o lo que sea..
Si no has entendido casi nada de lo que te acabo de poner, tranquilo. Puedes incluir una captura de la escena de Unity, mostrando el personaje, su brazo, y su espada seleccionados, para entender mejor cómo lo tienes organizado.También podrías incluir el código que uses para tratar de hacer el barrido del arma, y enseñarte una forma mejor de hacerlo, siguiendo ese camino. Palabras clave necesarias, buscarlas por Google: tween , ease in, ease out, sin, cos, movimiento circular.
En eso pense. el tema es que no se como ahcer para que se mueva desde un punto inicial hasta uno finalsi utilizar la funcion update. En caso que no se pueda de otra forma lo hago pero me quedaria mucho mas comodo no usarla porque hay distintos movimientos para los distintos tipos de armas, por lo toanto distintas funciones en scripts.
Cita de: martor date=1461434545" data-ipsquote="" data-cite="martor" class="ipsQuoteEn eso pense. el tema es que no se como ahcer para que se mueva desde un punto inicial hasta uno finalsi utilizar la funcion update. En caso que no se pueda de otra forma lo hago pero me quedaria mucho mas comodo no usarla porque hay distintos movimientos para los distintos tipos de armas, por lo toanto distintas funciones en scripts.
Se pueden realizar algunas animaciones vía script (pero es más complicado que hacerlo con el animador de Unity). Lo que podrías hacer es lo siguiente:
- Creamos dos booleanos: animStarted & animReturning, por ejemplo.
- El arma se inicia con una rotación (-45 en este caso, en el eje Z como tu bien dices).
- Creas un condicional: si se pulsa el click para disparar, empieza la animación (animStarted en true).
- En el Update:
- Si animStarted es true, se rota el arma en el eje Z la cantidad de "+1 * velocidadRotacion * Time.deltaTime".
- Cuando se llega a la rotación de 45 grados en el eje Z, se activa el retorno del arma (animReturning en true).
- Si animReturning es true, se rota el arma en el eje Z la cantidad de "-1 * velocidadRotacion * Time.deltaTime".
- Cuando se llega a la rotación de -45 grados en el eje Z, se desactiva tanto animReturning como animStarted.
Supongo que más o menos el sistema debería ser algo así.
[quote author=martor" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35711" data-ipsquote-contentcommentid="130101 date=1461434545]... hay distintos movimientos para los distintos tipos de armas, por lo toanto distintas funciones en scripts.[/quote]No necesariamente es necesario varios scripts. Se puede manejar con el mismo script de control diferentes armas, si todas las armas comparten el mismo nombre de animación(en el caso del componente Animation), o el mismo nombre de parámetros(en el caso del componente Animator).Tan sólo habría que cambiar de componente Animation o Animator al cambiar de arma.