1

Unity で SteamVR を使用して VR アプリケーションを作成しています。Snap Rotation Script を実装したので、ユーザーは物理的に行うことなくゲーム内で自分自身を回転させることができます。

私の階層は次のとおりです: [CameraRig] -> (コントローラー左、コントローラー右、カメラ)

問題は、オブジェクトを持っていてそれを投げたいときに、先に 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