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

Я работаю над единой игрой, и у меня есть игровой объект, мне нужно постоянно поворачиваться к целевому углу, и он должен идти кратчайшим путем туда.

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

Transform target;


float speed;

//The angle to constantly rotate torwards
float yRotation = 120f;
private int dick;
void Start()
{

}
void Update()
{

    if (Input.GetKeyDown(KeyCode.D))
    {
        if (dick < 3)
        {
            dick += 1;
        }
        else
        {
            dick = 1;
        }

    }
    else if (Input.GetKeyDown(KeyCode.A))
    {
        if (dick >0 )
        {
            dick -= 1;
        }
        else
        {
            dick = 3;
        }
    }
    if (dick == 1)
    {
        yRotation = 0;
    }
    else if (dick == 2)
    {
        yRotation = 120;
    }
    else if (dick == 3)
    {
        yRotation = 240;
    }

Как вы можете видеть, есть некоторые части из старого кода

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

1 Ответ

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

Две вещи, которые вы можете попробовать:

  • В обновлении каждый раз вычисляйте направление между вами и целью, затем вычисляйте угол и затем используйте Quaternion.AngleAxis () илипросто Quaternion.RotateTowards ()

  • Вы также можете просто использовать Transform.LookAt (yourTarger.transform)

...