Нужна помощь в открытии двери с анимацией вместо сценариев вращения - PullRequest
0 голосов
/ 19 февраля 2019

Моя дверь смешно открывается со сценарием, поэтому я хотел бы открыть ее с анимацией.Если кто-нибудь знает, как это исправить, это было бы очень полезно.Вот часть скрипта, управляющая секцией открытых дверей.

Я пробовал писать сценарии, но не могу найти подходящий метод сценариев для Unity.(Я использую новейшую версию Unity).

 if (open)
        {
            var newRot = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0f, -90.0f, 0f), Time.deltaTime * 200);
            transform.rotation = newRot;

            Ray ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, interactDistance))
            {
                if (hit.collider.CompareTag("Door"))
                {
                hit.collider.transform.parent.GetComponent<doorOpen>().ChangeDoorState();
                }
            }
        }
        else
        {
            var newRot = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0f, 0f, 0f), Time.deltaTime * 200);
            transform.rotation = newRot;
        }

Я использую ключ, чтобы открыть свою дверь, и я хотел бы, чтобы дверь открылась с анимацией.Любая помощь будет потрясающей.

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Как правило, вы бы создали и анимацию, которая изменила желаемое преобразование игрового объекта.(В вашем случае вращение по оси Y.)

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

    animator.setTrigger("Open");

Преимущество этого способа заключается в том, что вы можете легко контролировать скорость открытия двери.

0 голосов
/ 29 марта 2019

hit.collider.transform.parent.GetComponent () ChangeDoorState ().должен был вызвать анимацию.Не это.

private Animator _animator;

void Start()
{
    _animator = GetComponent<Animator>();
}

void OnTriggerEnter()
{
    if (other.tag == "Player")
    _animator.SetBool("open", true);
}

"open" - это анимация, которую вы назначаете двери.не забудьте добавить «аниматор» в инспекторе.

0 голосов
/ 19 февраля 2019
  1. Создайте анимационный ролик с дверью и сохраните его
  2. Добавьте анимационный компонент с игровым объектом двери
  3. и поместите туда созданную вами анимацию
...