【Unity】壁に当たって、落ちずに止まってしまう問題を解決

バージョン

2021.3.10f1

前記事に引き続き、ランゲーム

やりたかったのはこれ!!

2Dゲームでキャラクターを途中ストップさせたいのに止まらない。
Freezeの方で挑戦したが、それでもダメ。

そもそも、壁に当たってずり落ちないのがおかしいので調査。

そして、行き着いたのが、この方の記事。

【Unity】プレイヤーが壁に引っかかる理由とその対処法 - なぜナビ
導入プレイヤーを動かす設定はできたが、今度はプレイヤーが壁にくっつくようになってしまった。…そんな人の為に、

friction(=摩擦)があるから、ずり落ちないのね。

ということで、この方の記事の補足。

ProjectのAssetsで右クリック。

Create/2D/Physics Material2Dを選択

作ったPhysicsMaterial2Dを選ぶと下図

frictionを0にしました。

あとは、各々のColliderやらRigidbodyやらに付けていく。

当たり判定の両側に付けないとダメみたい。
(要は、playerとWallの両方に付けてないと、摩擦が発生するようです。)

Freezeはどうしたかというと・・・。

なお、結局FreezeからisKinematicに戻しました。
加えて、velocityもzeroにしました。

rb.isKinematic = true;
rb.velocity = Vector3.zero;

isKinematic = true;の直前の状態を保持するようで
一旦リセットする必要がある?

isKinematicの問題発生

物理演算をやめるisKinematicですが、
ふとしたタイミングで壁を貫通しました。

最終的には

Rigidbody.GravityScale=0;

で、重力を無効にして、対処。

二転三転繰り返しなんとかことを終えることが出来ましたとさ。

コメント

タイトルとURLをコピーしました