Как проверить, какая анимация играет - PullRequest
0 голосов
/ 26 февраля 2020

В настоящее время я делаю PlayerMovement, и у меня есть некоторые проблемы с проверкой, если мой персонаж бездействует, работает или бегает. Как вы можете видеть, я не могу понять, как «Делать что-то», если анимация моих персонажей бездействует, работает или бегает, и я вкладываю пространство.

if(anim.Play("Idle") && Input.GetKeyDown(KeyCode.Space))
        {
             //Do something
        }

Я хочу иметь возможность «Делать что-то» "если 1 анимация из 3 в действии.

1 Ответ

2 голосов
/ 26 февраля 2020

Animation

То, что вы здесь используете Animation.Play(string name) возвращает

In в случаях, когда анимация не может быть воспроизведена (например, если нет анимации по умолчанию или нет анимации с указанным именем), функция вернет false.

Это не то, что вы хотите используйте, так как он перезапускает вашу анимацию каждый кадр и всегда возвращает true, если клип с именем Idle существует;)

Так что в случае anim это Animation, вы скорее всего хотите проверить используя Animation.IsPlaying(string name)

if (anim.IsPlaying("Idle") && Input.GetKeyDown(KeyCode.Space))
{
    // Do something
}

Animator

В случае, если anim является Animator вы можете использовать GetCurrentAnimatorStateInfo(int layerIndex), который возвращает AnimatorStateInfo, где вы можете использовать IsName(string name)

if (anim1.GetCurrentAnimatorStateInfo(0).IsName("Idle") && Input.GetKeyDown(KeyCode.Space))
{
    // Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...