【Unity】キャラクターが「倒れたか」をスマートに判定

Pirate Ships Pack MTSの帆船が倒れる前

キャラクターが「一定以上に傾いて倒れたか」をスマートに判定する。
自分は、帆船の転覆判定に使用した。

Pirate Ships Pack MTSの帆船が転覆した後

倒れた時に、キャラクターのColliderを無効にすると、戦闘からの除外をクールに処理出来る。
更にRigidbody.dragの値を変更すると、ゆっくりと良い感じに落ちます。

使用方法

  • 「倒れたか」を判定したいキャラクターに、アタッチしたスクリプトに、コードを追記。
  • Updateや、コルーチンでCheckToppledを呼ぶ。

コード


//「倒れた」と判定するボーダーとなる、任意の値。
//Vector3.Angleの値は常に正数になるので、負数への対応は気にしなくて良い。
	float angleThreshold = 60.0f;

	void CheckToppled () {
		if (angleThreshold < Vector3.Angle(Vector3.up, transform.up)) {
//倒れた時の処理をここに書く。

		}
	}

一応注意

transform.upを使用しているので、3Dモデルが立っている状態でRotation(0, 0, 0)になるように合わせる。
通常のキャラクターなら、一々弄らなくても大丈夫だが、ドミノ等の場合は注意が必要。

使用したUnity標準メソッドの説明

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