【发布时间】:2019-11-29 08:31:23
【问题描述】:
我正在做一个 VR 游戏,而相机是通过 RigidBody 控制的:
private void FixedUpdate() {
Vector2 primaryAxis = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick);
...
rigidbody.AddForce(velocityChange, ForceMode.VelocityChange);
}
现在我想移动玩家的手,它也有一个刚体,所以我这样做:
private void FixedUpdate() {
GetComponent<Rigidbody>().MovePosition(mainPlayer.transform.TransformPoint(controller));
GetComponent<Rigidbody>().MoveRotation(mainPlayer.transform.rotation * rot);
}
当我使用摇杆移动主角时,手确实会随之移动,但它明显滞后。我知道游戏引擎和物理引擎的运行循环之间的区别,但仍然无法理解。
编辑:
我的猜测是,当我在相机上执行 AddForce 时,直到调用了所有 FixedUpdates 之后,变换才会更新,因此手无法访问最新的变换。
而我能解决它的唯一方法是通过一些智能关节设置。
【问题讨论】:
-
这是一篇不同的文章,但它是一篇很棒的文章
标签: unity3d