【问题标题】:Can anyone help me make a script that rotates towards a specific angle谁能帮我制作一个向特定角度旋转的脚本
【发布时间】:2019-02-06 20:41:18
【问题描述】:

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

我尝试使用 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;
    }

您可能会看到旧代码中的某些部分

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

【问题讨论】:

  • 对不起变量名,我试过 IEnumerator RotateMe(Vector3 byAngles, float inTime) { var fromAngle = transform.rotation; var toAngle = Quaternion.Euler(transform.eulerAngles + byAngles); for (var t = 0f; t
  • 看起来 if (dick&gt;0) dick -=1 实际上应该是 if (dick&gt;1) dick -=1
  • 谢谢,但这不是我需要帮助的部分,我需要轮换本身的帮助

标签: c# visual-studio unity3d game-physics


【解决方案1】:

你可以尝试两件事:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2016-09-06
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多