【发布时间】:2021-01-30 20:41:26
【问题描述】:
这段代码涉及将 Vector3 moveVector 与 float moveSpeed 和另一个 float Time.deltaTime 相乘。这些浮点数是否乘以 Vector3(x,y,z)的每个值?此外,如果我写的是transform.position而不是GameObject.transform.position,那么transform.position会转换全局对象的位置,从而更新此移动脚本附加到的任何GameObject/prefab的位置是否正确?
void Move(Vector3 desiredDirection)
{
moveVector.Set(desiredDirection.x, 0f, desiredDirection.z);
moveVector = moveVector * moveSpeed * Time.deltaTime;
transform.position += moveVector;
}
【问题讨论】:
-
顺便说一下,如果你使用刚体和物理,请记住不要手动设置 transform.position。在这种情况下,使用 MovePosition 函数确保物理引擎可以立即对新位置做出正确反应。甚至更好:使用 AddForce 实现平滑移动。此外,最好将这些东西放在 FixedUpdate() 而不是 Update() 中,因为前者与物理引擎同步,后者与屏幕刷新率同步(往往波动更大)。