私は、Google CardboardのVR迷路ゲームを、プレーヤーを動かすスクリプトとしてhttps://github.com/JuppOtto/Google-Cardboard/blob/master/Autowalk.csで構築しています。今まで私は何も助けてくれなかったし、私は物理材料、頑丈な凍結/解凍の解除、アンギュラネスへのアンギュラ玉の設定などをやってみた。壁に衝突するとリジッドボディキャラクターが跳ね返る(Autowalk.cs)
私が習ったように、問題私のリジッドボディがそれらにメッシュコライダーを持っている壁に突き刺さっていて、それが戻ってきて、この奇妙な "弾むような行動"を引き起こしているはずです。 Rigidbodyのキャラクターは、たとえできないとしても、壁を突き抜けようとしているような気がします。
ほとんどの場合、これはあまりにも大きな問題ではありませんが、メッシュのコライダーを持っている小さなオブジェクトを持つゲームのコーナーがいくつかあり、プレイヤーがこれらのオブジェクトとそれらは単にゲームエリアから壁全体に押し出される(バウンスされる)。
ここに私のキャラクターの移動のための責任があると私は、これは何か他のものに変更する必要があると考えているビットがあります:
if (isWalking)
{
Vector3 direction = new Vector3(head.transform.forward.x, 0, head.transform.forward.z).normalized * speed * Time.deltaTime;
Quaternion rotation = Quaternion.Euler(new Vector3(0, -transform.rotation.eulerAngles.y, 0));
transform.Translate(rotation * direction);
}
そしてここでは、私の設定に関するいくつかの情報です:あり
キャラクター運動スクリプトには、カプセル衝突器と質量1の剛体があります。ドラッグ&アンギュラドラッグ:0;重力を使用していますが、キネマティックではなく、衝突検出を離散に設定して補間をなしに設定しています。位置は固定されていませんが、回転はすべてのX、Y、Z座標に適用され、転倒しません。
壁(3Dモデル)には単純なメッシュコライダーがありますが、これ以上のものはありません。
私は、キャラクターが壁に衝突したときに停止するだけでなく、トリガーを使用しているとは思わないと言いたいと思います。そのようなことは良い考えです。完全に止めることは、プレーヤーが直面しているときに壁に衝突する場合にのみ許容されますが、角度がある場合、プレーヤーは壁に沿って「スライド」します。
ご意見ありがとうございます。 CharacterControllerへの切り替えは私が最終的にやっていたもので、私のためにすべてを修正したので、これを受け入れられた答えとして選択しました。 – ynef