Quaternion.LookRotation() 是如何工作的
How does Quaternion.LookRotation() works
我正在尝试制作一个立方体来查看鼠标我发现了以下代码:
RaycastHit hit;
if(Physics.Raycast(ray, out hit))
{
Vector3 targetPosition = new Vector3(hit.point.x, transform.position.y, hit.point.z);
Quaternion rotation = Quaternion.LookRotation(targetPosition - transform.position);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * 10.0f);
}
我不明白他为什么要从 transform.position 中减去 targetPosition?
Documentation LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)
LookRotation 将方向矢量转换为 Quaternion
。在这个例子中,他想要两点之间的角度。通过减去两个位置向量,您可以获得点之间的距离并将该距离向量转换为 Quaternion
.
upwards
只是作为参考而已。您可以将其设置为您喜欢的任何值,但如果将其留空(如本例所示),它将默认为 Vector3.up
.
我正在尝试制作一个立方体来查看鼠标我发现了以下代码:
RaycastHit hit;
if(Physics.Raycast(ray, out hit))
{
Vector3 targetPosition = new Vector3(hit.point.x, transform.position.y, hit.point.z);
Quaternion rotation = Quaternion.LookRotation(targetPosition - transform.position);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * 10.0f);
}
我不明白他为什么要从 transform.position 中减去 targetPosition?
Documentation LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)
LookRotation 将方向矢量转换为 Quaternion
。在这个例子中,他想要两点之间的角度。通过减去两个位置向量,您可以获得点之间的距离并将该距离向量转换为 Quaternion
.
upwards
只是作为参考而已。您可以将其设置为您喜欢的任何值,但如果将其留空(如本例所示),它将默认为 Vector3.up
.