ボタンを押したときに壁にぶつかるプレーヤー


17

だから、私はトップダウンRPGを作っています。

すべてが順調に進んでいますが、この問題は非常に厄介です。今、キャラクターが壁に向かって移動すると、プレイヤーは前後に揺れます。プレイヤーが壁に移動しようとしているので、壁の衝突がそれを押し戻しているためだと思います。私の質問は、明らかに、これをどうやって止めるのですか?

ありがとう!

PS:私はtransform.translateを使用してプレーヤーを移動し、C#を使用しています。

編集:私も2D Rigidbodyと2Dboxコライダーの両方を使用しています。


翻訳する前にスイープテストが必要です
MickLH


ああ。ええと...これをUnity C#に追加する方法がわかりません。私はC#に少し慣れています。知識があれば、これを実装する方法を説明してもらえますか?
-GMR516

回答:


51

Transform.Translateを使用してプレーヤーを壁にワープしているため、ジッターが発生しています。物理ステップでは、「おい、壁にいます。この衝突の問題を解決して、プレーヤーを壁から押し出しましょう。 」

Rigidbody2Dを使用する際にこの問題を回避するには、それを使用することをお勧めしますRigidbody2D.MovePositionを。これにより、移動時にコライダーが重ならないようにします。コライダーとリジッドボディが何かが邪魔だから動かない場合でも、それは動揺しません。

Rigidbody2D.MovePositionを使用して、Rigidbody2D.interpolation値を設定すると、動きが滑らかに見えるようになります。

ただし、何らかの理由でRigidbody2D.MovePositionがゲームに理想的でなく、Transform.Translateを引き続き使用する場合は、Physics2D.Raycast(または他のPhysics2Dキャスト)を使用して、移動すると壁にぶつかるかどうかを確認し、壁にぶつからない場合にのみ移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.