Unity 2D对象面向其移动方向

时间:2019-01-20 19:12:40

标签: unity3d rotation 2d quaternions

嘿,我在使2D精灵面对移动方向时遇到麻烦。它们遵循地图上的航路点,我希望它们在通过航路点时旋转,但是在实现时遇到困难。如果可以的话,我将不胜感激,谢谢。

c.NotebookApp.notebook_dir = 'C:/Users/Евгений/Documents/GitHub/sandbox'

1 个答案:

答案 0 :(得分:2)

在脚本中添加以下功能,然后在更新中调用

private void RotateTowardsTarget()
{
    float rotationSpeed = 10f; 
    float offset = 90f;    
    Vector3 direction = target.position - transform.position;
    direction.Normalize();
    float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
    Quaternion rotation = Quaternion.AngleAxis(angle + offset, Vector3.forward);
    transform.rotation = Quaternion.Slerp(transform.rotation, rotation, rotationSpeed * Time.deltaTime);
}

如果旋转似乎消失了,只需将“偏移”值调整90倍,或者将其完全删除即可。