首页 > 解决方案 > 谁能帮我制作一个向特定角度旋转的脚本

问题描述

我正在开发一个统一游戏,我有一个游戏对象,我需要不断地向目标角度旋转它需要在那里走最短的路

我曾尝试使用 lerp 协同程序将其添加/减去角度,但是当我快速使用它时,它会卡在奇怪的位置

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;
    }

如您所见,旧代码中有一些部分

我使用这种齿轮系统的原因是它不会卡在奇怪的位置,但我不知道如何不断地将它旋转到那个目标角度

标签: c#visual-studiounity3dgame-physics

解决方案


您可以尝试两件事:

  • 在更新中,每次计算你和目标之间的方向,然后计算角度,然后使用 Quaternion.AngleAxis() 或简单的 Quaternion.RotateTowards()

  • 您也可以简单地使用 Transform.LookAt(yourTarger.transform)


推荐阅读