【发布时间】:2020-08-29 19:57:10
【问题描述】:
我希望我的对象在我旋转相机的同时也朝着相机旋转,这样玩家在行走时总是朝向相机的方向,就像在典型的第三人称游戏中一样。 不幸的是,到目前为止使用的任何方法都会使我旋转物体,稍微落后于相机的旋转。 我一直在寻找一个星期的解决方案,我很绝望。 我发布了我与一个对象的旋转视频。
private Rigidbody rb;
public float speed = 1.0f;
void Start()
{
rb = GetComponent<Rigidbody>();
}
direction = Camera.main.transform.forward;
direction.y = 0.00f;
private void FixedUpdate ()
{
Quaternion targetRotation = Quaternion.LookRotation(direction);
Quaternion newRotation = Quaternion.Lerp(rb.transform.rotation, targetRotation, speed * Time.fixedDeltaTime);
rb.MoveRotation(newRotation);
}
}
【问题讨论】:
-
增加
speed变量应该可以解决您的问题,因为延迟是由 Quaternion.Lerp 调用引起的,它可以平滑两个旋转之间的过渡。此外,如果您需要对 Camera 和 Rigidbody 进行相同的旋转,只需将 Rigidbody 放置为 Camera 的子项。 -
我可以不成比例地增加速度,物体在旋转过程中旋转得更快,但总是迟到。如果我将对象定位为相机中的孩子,需要什么脚本来解决问题?
-
无脚本,旋转直接继承自父级(本例中为相机)。
-
但是这样它会一直在前面而不旋转,就像取景器一样。相反,效果将是对象与相机旋转同时旋转。例如在这些游戏中(youtube.com/watch?v=shZ6uPSA7UA)
标签: c# unity3d rotation transform quaternions