2017-11-21 15 views
1

私はプレイヤーがあるプラットフォームから別のプラットフォームにジャンプしたいゲームを持っています。私のプラットフォームでは、ボックスコライダーがあります。Unity OnTriggerEnterが間違ってトリガーする

私がジャンプしようとしたとき、時には自分のプレーヤーがコライダーの側にぶつかり、それに磨きをかけて滑り落ち、最終的に死の状態を引き起こします。これを防ぐために、私はプラットフォームの隣にトリガーコライダーを置きました。私はまた、トリガーコライダーをボックスコライダーの少し下に置きます。そのため、プレーヤーがエッジを飛び越えても、両方をアクティブにしません。

トリガーがアクティブになっている場合、私は死の機能を果たします。そうでなければ、プレイヤーは強固なジャンプを行い、他のゲームロジックを続けます。 しかし、私は、プレーヤーがプラットフォームの端に着陸したときに、オントリガイベントと同様に衝突機能に入ることがあることに気付きます。

シーンビューで、プレーヤーのコライダーがプラットフォームの下のトリガーコライダーに入っていないことがわかりました。これは奇妙です。

私はこのミックスにレイキャストを追加しようとしましたが、レイキャストにもかかわらず、プレーヤーがトリガーに入っていないときになぜOnTriggerEnterがトリガーしているのか分かりません。

プレイヤーがスピードを落としているので、プレイヤーのコライダーがプラットフォームコライダーに押し込む可能性があると考えましたが、シーンビューに表示されると思いました。

picture with the mesh and colliders

picture with collider orientation only

私の質問私は、プラットフォームのコライダーに着地するとき、どのようにそれがトリガーコライダーをトリガすることは可能ですか?私はその上から飛び跳ねています。下からではありません。私がプラットフォームを完全に逃した場合、トリガーは予期されたとおりに起動しますが、プラットフォームの上に着陸すると、トリガー・コライダーと重なり合わず、引き続き発砲します。

/E

sketch

これは私の3D環境のビューの側面です。正確な描写ではなく、あなたのためにそれを単純化することです。私のプレイヤーはあるプラットフォームから別のプラットフォームにジャンプしていますが、これらのプラットフォームはすべて、ボックスコライダーを備えた3次元キューブです。 2つのプラットフォームの間では、少し下のレベルで私はトリガーコライダーを持っています。

私のプレーヤーがトリガーコライダーにゲームを打つと、私の質問は時々私のプレーヤーがスケッチのようにボックスコライダーの端に着陸することがありますが、何らかの理由でゲームオーバートリガーコライダーをトリガーします。それらの間には十分な空間があり、触っていてもいない。

要約すると、プレイヤーとトリガーコライダーの間に接触がない場合、私のオントリガーが実行されていますが、その理由は何ですか?あなたが見ることができるように

actual game screenshot

は私のプレーヤーのコライダーはプラットフォーム箱コライダーの上にしっかりとあり、まだontriggerenterプラットフォームへと下にある次のコライダーのためのトリガーと私のプレイヤーが進む、描画線を無視します死のアニメーションに私はこれ以上具体的なことはできません。あなたが今私を助けて、なぜこれが起こっているのか説明してください。私のプレイヤーは、彼らが触れていないトリガーコリドーから遠く離れています。

+0

あなたのコードで質問を編集し、分かりやすくするために別々にしてください。 – Programmer

+0

これはコードとはまったく関係がありません。いくつかのスクリーンショットを入れて、より意味をなさせるようにしてください。 –

+0

2つ以上のプラットフォームが表示され、1つは他のプラットフォーム内にあり、1つは非常に低い高さです。箱の衝突を簡単にする必要があります。大きな解像度に必要な精度は、リソースが非常に高価で、正しく設定しないでください。より大きなボックスと充分な距離を持ち、別のものは1つもありません – joreldraw

答えて

0

いつものように、Stackoverflowからの応答はありません。

とにかく私の問題の解決策を見つけることができました。ソリューションは醜いもので、共有する価値はありませんでしたが、他の誰かが衝突の検出に悩まされていたため、次のようなことが起こりました。

1 - 相互に衝突する剛体を連続的または連続的な動的に変更することを検討できます。これにより、パフォーマンスのオーバーヘッドは増加しますが、剛体間の衝突がより良好になります。

2 - 物理マネージャーでは、デフォルトのソルバー反復をオンにしようとすることができます。マニュアルから:ソルバーは、ジョイントの動きや重なり合ったリジッドボディコンポーネント間の接触の管理など、物理的なやりとりの数を決定する小さな物理エンジンタスクです。既定のソルバー反復を使用して、物理フレームごとにUnityが実行するソルバープロセスの数を定義します。これはソルバー出力の品質に影響し、デフォルト以外のTime.fixedDeltaTimeが使用されている場合や設定が余分に必要な場合にプロパティを変更することをお勧めします。通常、ジョイントやコンタクトに起因するジッタを低減するために使用されます。

これらのまたはこれらの組み合わせは、見るべきものかもしれません。

関連する問題