Как мне остановить и перезапустить циклическую анимацию, когда я использую «Input.GetKeyUp»? - PullRequest
0 голосов
/ 14 декабря 2018

(Клик) Отображение компонента Аниматор.

В основном;при нажатии shift + w воспроизводится анимация дрожания камеры.Проблема, с которой я сейчас сталкиваюсь, такова;когда я отпускаю клавиши, анимация останавливается в своем последнем состоянии (это наклон от -3 до 3 по оси x).Это может заморозить наклон камеры и может быть заморожено по диагонали.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraShake : MonoBehaviour
{
    private Animator myAnimator;
    private Animation myAnim;

    void Start()
    {
        myAnimator = GetComponent<Animator> ();
        myAnimator.enabled = false;
        myAnim = GetComponent<Animation> ();
        myAnim.enabled = false;
    }

    void Update () 
    {
        if (Input.GetKey (KeyCode.W)) 
        {
            if (Input.GetKeyDown (KeyCode.LeftShift)) 
            {
                myAnimator.enabled = true;
            }
        }
        if (Input.GetKey (KeyCode.LeftShift)) 
        {
            if (Input.GetKeyDown (KeyCode.W)) 
            {
                myAnimator.enabled = true;
            }
        }

        {
            if (Input.GetKeyUp (KeyCode.LeftShift)) 
            {
                myAnimator.enabled = false;
            }
            if (Input.GetKeyUp (KeyCode.W)) 
            {
                myAnimator.enabled = false;
            }
        }
    }
}

1 Ответ

0 голосов
/ 14 декабря 2018

Вместо того, чтобы отключать аниматор, который замораживает анимацию там, где она есть, установите скорость на 0f, затем установите время на 0f.

if (Input.GetKeyUp (KeyCode.LeftShift) 
    || Input.GetKeyUp (KeyCode.W)) 
{
     myAnimator.speed = 0f;
     myAnimator.Play("cshake",0,0f);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...