Cómo hacer que la animación se repita con cada pulsación de tecla en unity (Unity3d, C#)
– UnityAssets3Free
buenas , por aqui josel luis y hoy os traigo
nueva pregunta curiosa
Soy nuevo en C# y Unity y estoy tratando de descubrir cómo hacer una animación para un objeto en unity reproducir cuando presiono una tecla, pero solo puedo hacer que la animación se reproduzca una vez, y luego se rompe y no funciona. (Estoy tratando de hacer un juego FPS)
El código que tengo ahora es así:
void Start()
gameObject.GetComponent<Animator>().enabled = false;
// Update is called once per frame
void Update()
if (Input.GetButtonDown("Fire1"))
Shoot();
gameObject.GetComponent<Animator>().enabled = true;
Cuando presiono Ejecutar y hago clic con el botón izquierdo, la animación se dispara y hace lo que debería, pero cuando intento hacerlo de nuevo, la animación no funciona. ¿Alguien puede ayudarme a cambiar este código para que la animación funcione y se reproduzca cada vez que se presiona el botón?
1 respuesta 1
Supongo que su animación no está en bucle, como si estuviera en bucle, ya se reproduciría sola cuando terminara.
Una nota rápida que tendría con su código es no usar GetComponent en una función de actualización, ya que es bastante costoso. Una manera fácil de restablecer un estado de animación es activarlo y desactivarlo; sin embargo, asumo que desea tener más animaciones que disparos. ¿Le gustaría ver lo que se llama un Árbol de Animación o un árbol de mezcla y agregue Estados a su animación. Ejemplos de estados serían Inactivo, Caminar, Correr, Disparar, Agacharse, etc. Consideraría buscar Animation Trees y Blend Trees para obtener un ciclo de animación completo.
Una vez que tenga una máquina de estado en funcionamiento, haría que la entrada pasara a un estado Inactivo y luego establecería una transición Bool o alternaría directamente la animación en el código.
// when you serialize a private field, it will appear in
// the inspector so you can drag in the reference in the editor
[SerializeField] private Animator anim = null;
private void Start()
anim.enabled = false;
private void Update
if(Input.GetButtonDown("Fire1")
Shoot();
if(!anim.enabled)
anim.enabled;
else
anim.Play("AnimationStateName", -1, 0f);
No he probado el código, pero creo que esto funcionaría con su configuración. Todavía recomendaría encarecidamente no hacer eso y mirar los árboles. Después de implementar el árbol, en lugar de llamar usando enable, simplemente use la línea anim.Play(«AnimationStateName», -1, 0f) o puede hacer anim.SetBool(isAttacking, true) si configura su estado para pasar de Idle / Correr/caminar/etc. para atacar cuando el bool isAttacking se establece en verdadero.
encontré uno video eso te puede ayudar No quiero publicar una explicación completa de los estados de animación y fusionar árboles, solo apuntar en la dirección correcta para un mejor enfoque.
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
eso es todo,hasta la proxima