Как вращать дверь плавно - PullRequest
0 голосов
/ 03 апреля 2020

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

public float degrees = -90f;

public Transform door;

private void update()
{
    door.transform.Rotate(0f, 0f, degrees, Space.Self);
}

Как мне заставить его вращаться плавно, а не просто встать на место?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Вы можете сделать это, используя Сопрограммы и Slerp . Попробуйте это:

using System.Collection;

...

public Transform door;
public float degrees = -90f;
public float someSpeed = 0.08f;

IEnumerator OpenDoor ()
{
    while (door.transform.localEulerAngles.y > degrees)
    {
        door.transform.localEulerAngles = Vector3.Slerp(door.transform.localEulerAngles
            , new Vector3(0, degress - 0.2f, 0), someSpeed);

        yield return new WaitForEndOfFrame();
    }

    yield break;
}

И там, где вам нужно, просто позвоните StartCoroutine(OpenDoor());.

Надеюсь, это то, что вы хотите.

0 голосов
/ 03 апреля 2020

Простое решение

public float degrees = -90f;
    public float rotationDuration = 5f;

    public Transform door;

    private float startTime;
    private bool isOpenningDoor;

    private void OpenDoor()
    {
        startTime = Time.time;
        door.transform.eulerAngles = Vector3.zero;
        isOpenningDoor = true;
    }

    private void update()
    {
        if(Input.GetKeyDown(KeyCode.O))//for testing
        {
            OpenDoor();
        }
        if(isOpenningDoor)
        {
            float ratio = (Time.time - startTime)/rotationDuration;//percentage of total rotation
            if(ratio >= 1f)//when you reached max rotation
            {
                ratio = 1f;
                isOpenningDoor = false;//Stop extra rotation
            }
            door.transform.Rotate(0f, 0f, ratio * degrees, Space.Self);
        }
    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...