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;
}