相对于CameraRig(VR)的AngularVelocity

时间:2019-05-05 09:50:55

标签: unity3d quaternions rigid-bodies

我有点泡菜。我正在尝试使在VR中从我的手释放的对象采用正确的控制器速度和angularVelocity,以便使它们的释放运动感觉自然。这是跟踪控制器角速度和速度并在释放时将其传递给对象的一个​​简单问题:

import numpy as np
import pandas as pd
dates = pd.date_range('20130101', periods=6)

df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

但是,这里出现了踢脚,我也有一个运动系统,它恰好相对于播放器的头部旋转CameraRig,这样做之后,这些值都是错误的,并且相对于cameraRig而言是这样移动的:

 rigid.velocity = controller.currentVelocity;
 rigid.angularVelocity = controller.currentAngularVelocity;

我尝试寻找类似(ref)和类似(ref)的答案,但都没有用。任何建议将是最欢迎的。当使用其他形式的运动时,可以正确设置抛出的对象的角速度和速度,但是一旦我在cameraRig上使用了rotateAround,就不会设置。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题,所以我想在这里添加解决方案。

不是使用此代码来引发对象:

 _rigid.velocity = controller.currentVelocity;
 _rigid.angularVelocity = controller.currentAngularVelocity;

我用过:

 _rigid.AddForce(controller.currentVelocity);
 _rigid.angularVelocity = controller.currentAngularVelocity;

这解决了该问题,并且无论父级的旋转方式如何,对象现在都可以按预期的方向飞行。