バージョン
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;
で、重力を無効にして、対処。
二転三転繰り返しなんとかことを終えることが出来ましたとさ。
コメント