Не проигрывается одна из анимаций на Unity

211
02 января 2019, 17:20

Когда нажимаю на кнопку удара, не проигрывается анимация Punch(), ее запускает State Punch.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
public float speed;
public int directionInput;
public float jumpForce;
Rigidbody2D rb;
public bool isGrounded;
public GameObject sprite;
Animator anim;

private CharState State
{
    get { return (CharState)anim.GetInteger("State"); }
    set { anim.SetInteger("State", (int)value); }
}
private void Awake()
{
    rb = GetComponent<Rigidbody2D>();
    anim = sprite.GetComponent<Animator>();
}
void Start () {
}
private void Update()
{
    if (!isGrounded) State = CharState.Jump;
    if ((isGrounded) && (directionInput == 0))
    {
        State = CharState.Idle;
    }
    {
        if (directionInput < 0)
        {
            HoldLeft();
        }
        else if (directionInput > 0)
        {
            HoldRight();
        }
        else if (directionInput == 0) State = CharState.Idle;
    }
}
void FixedUpdate () {
    rb.velocity = new Vector2(speed * directionInput, rb.velocity.y);
}

public void Move(int InputAxis)
{
    directionInput = InputAxis;
}

public void HoldRight()
{
    sprite.GetComponent<SpriteRenderer>().flipX = false;
    State = CharState.Hold;
}

public void HoldLeft()
{ 
        sprite.GetComponent<SpriteRenderer>().flipX = true;
        State = CharState.Hold;
}
public void Punch()
{
        State = CharState.Punch;
}
public void Jump()
{
    rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    State = CharState.Jump;
}
private void OnCollisionEnter2D(Collision2D collision)
{
     if(collision.gameObject.tag == "Ground")
    {
        isGrounded = true;
    }
}
private void OnCollisionExit2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Ground")
    {
        isGrounded = false;
    }
}


public enum CharState
{
    Idle,
    Hold,
    Run,
    Jump,
    Punch
}

}

Answer 1

Думаю, проблема в том, что Punch запускается, но при следующем же кадре вызывается Update, и состояние перевыставляется на idle или hold.

READ ALSO
Как редактировать в DataGridTemplateColumn WPF

Как редактировать в DataGridTemplateColumn WPF

Подскажите, что нужно добавить в DataGridTemplateColumn, чтобы курсор когда пытаешься отредактировать в ячейке не приходилось нажимать три раза, а после...

219
Не рабоает count()

Не рабоает count()

Не работает функция count()Она должна искать в массиве числа которые совпадают с введеным

201
Как отделить группу от цифр?

Как отделить группу от цифр?

Как при замене по регулярке в строке подстановки после группы $1 написать нечто, начинающееся с цифры, чтобы оно не стало частью номера группы?

206
Как добавить box collider через код

Как добавить box collider через код

Создаю копию объекта через Instantiate (у оригинала стоит Box-Collider) в итоге у копии компонент такой есть, но галочка почему-то снятаКак галочку поставить...

222