1

私は Unity3D を使用しており、リジッドボディのプレーヤーがあります。プレイヤーを動かすために体に力を加えます。私のプレーヤーは地形の上を歩きますが、登るには急な山を歩くことができます。プレイヤーを制限して、急な坂を上れないようにしたい。

この機能を備えた CharacterController コンポーネントがあることは知っていますが、rigidbody を使用する必要があるため、rigidbody でも同じことが必要です。

私が立っている三角形の法線を取得し、その角度を計算することはできますが、プレイヤーが斜面を上るのを止めることはできないようです。プレーヤーの動きを止めるだけです (角度のついた斜面にぶつかると、プレーヤーは動けなくなります)

この問題を解決する方法はありますか?

4

1 に答える 1

3

物理エンジンをどのように使用しているかについての詳細がなければ、答えることは困難です。摩擦をどのように/使用していますか? 力を加える角度は?それは常に水平ですか、それとも床の角度ですか? プレーヤーには質量がありますか?

とにかく、これを解決するいくつかの方法を考えることができます

  1. 純粋物理の道を進みます。プレイヤーの質量、摩擦、力の角度、重力などを使用して、これらの状況を処理する物理学を取得します。これには、かなりの時間とプログラミングが必要になる場合があります。

  2. 剛体はそのままに、フォースを偽装します。プレイヤーがいる三角形の角度で、プレイヤーの体に加える力をスケーリングします。三角法を使用して、何を適用するか、独自のマッピングを行うことができます。独自のマッピングでは、0 の力が適用される角度 (たとえば 45 度) を設定し、適用される力に対して線形 (または非線形) スケールを実行して、平らな地面では力が 1、45 では力が 0 になるようにします。

  3. 剛体を使用しないでください。ほとんどのゲームが剛体を使用してキャラクターを制御しないのには理由があります。それは困難で複雑で、ほとんどの場合、時間をかける価値はありません。もちろん、私はあなたのプロジェクトの詳細を知らないので、これがオプションでない場合は問題ありません。

考えるきっかけになれば幸いです。

于 2012-10-12T11:32:21.773 に答える