C# (Unity)矢量乘法和位置更新如何在Unity中工作?

C# (Unity)矢量乘法和位置更新如何在Unity中工作?,c#,unity3d,qvector3d,C#,Unity3d,Qvector3d,这段代码涉及Vector3 movevevector与float moveSpeed和另一个float Time.deltaTime的乘积。这些浮点数是否与向量3(x,y,z)的每个值相乘?此外,如果我写transform.position而不是GameObject.transform.position,那么transform.position转换全局对象的位置,从而更新此移动脚本附加到的任何游戏对象/预设的位置,这对吗 void Move(Vector3 desiredDirection)

这段代码涉及Vector3 movevevector与float moveSpeed和另一个float Time.deltaTime的乘积。这些浮点数是否与向量3(x,y,z)的每个值相乘?此外,如果我写transform.position而不是GameObject.transform.position,那么transform.position转换全局对象的位置,从而更新此移动脚本附加到的任何游戏对象/预设的位置,这对吗

void Move(Vector3 desiredDirection)
  {
   moveVector.Set(desiredDirection.x, 0f, desiredDirection.z);
   moveVector = moveVector * moveSpeed * Time.deltaTime;
   transform.position += moveVector;
  }

moveVector*moveSpeed*Time.deltaTime
从矢量中提取每个数字,然后将其与移动速度相乘,然后再与Time.deltaTime相乘

如果我们有一个向量3,2,1,每个轴都乘以这个值: 3*speed*deltaTme 2*speed*deltaTme 1*速度*增量时间

transform.position
与编写
gameObject.transform.position
相同。因为脚本已附加到游戏对象

请注意GameObject和GameObject之间的区别

gameObject是脚本附加到的当前对象
GameObject是对象的基类

moveVector*moveSpeed*Time.deltaTime
从矢量中提取每个数字,然后将其与移动速度相乘,然后再与Time.deltaTime相乘

如果我们有一个向量3,2,1,每个轴都乘以这个值: 3*speed*deltaTme 2*speed*deltaTme 1*速度*增量时间

transform.position
与编写
gameObject.transform.position
相同。因为脚本已附加到游戏对象

请注意GameObject和GameObject之间的区别

gameObject是脚本附加到的当前对象
GameObject是对象的基类

顺便说一下,如果使用刚体和物理,请记住不要手动设置transform.position。在这种情况下,请使用MovePosition功能,以确保物理引擎能够立即对新位置做出正确反应。或者更好:使用AddForce实现平滑移动。此外,最好将这些内容放在FixeUpdate()和not Update()中,因为前者与物理引擎同步,而后者与屏幕刷新率同步(这往往波动更大)。顺便说一下,如果使用刚体和物理,请记住不要手动设置transform.position。在这种情况下,请使用MovePosition功能,以确保物理引擎能够立即对新位置做出正确反应。或者更好:使用AddForce实现平滑移动。此外,最好将这些内容放在fixeupdate()中,而不是Update(),因为前者与物理引擎同步,后者与屏幕刷新率同步(屏幕刷新率往往波动更大)。