1

我正在使用 SteamVR 在 Unity 中创建一个 VR 应用程序。我已经实现了一个 Snap Rotation Script,因此,用户可以在游戏中转身,而无需进行实际操作。

我的层次结构是:[CameraRig] -> (Controller left, Controller right, camera)

现在的问题是:当我拿着一个物体并想扔它时,如果我之前旋转了 CameraRig,那么扔的物体就会表现得很奇怪。它的方向是异相的,基于 CameraRig 的累积旋转。如果我从不旋转 CameraRig,则抛出的对象表现正常

我正在使用 FixedJoint 组件将对象附加到手上。

我怎样才能解决这个问题?

public void Drop() {

    // Null Check
    if (!m_CurrentInteractable){
        return;
    }

    // Apply velocity
    Rigidbody targetBody = m_CurrentInteractable.GetComponent<Rigidbody>();
    targetBody.velocity = m_pose.GetVelocity();
    targetBody.angularVelocity = m_pose.GetAngularVelocity();

    // Detach
    m_Joint.connectedBody = null;

    // Clear
    m_CurrentInteractable.m_ActiveHand = null;
    m_CurrentInteractable = null;
}
4

1 回答 1

0

在计算你的速度和 angularVelocity 时,尝试在之后再添加一个步骤,其中包含绑定:

velocity = Rig.transform.rotation * velocity;
angularVelocity = Rig.transform.rotation * angularVelocity;

希望这可以帮助!

于 2019-08-17T10:03:43.123 回答