Unity事例ノート

UNITY

動く床の上で一緒に移動する(方法1)

動いている床の上に乗ったとき、床と一緒に動いていく仕組みを作ってみましょう。

2つのオブジェクトで親子関係を取り、床オブジェクトの影響を受けるように作成していきます。

ジャンプしたときは床の動きに影響を受けません。

動く床については、こちらの作成方法もあります。

関連記事:
動く床の上で一緒に移動する(方法2)
乗れば下降していく床
エリアに入れば自動で動く(ムービングウォーク)

床オブジェクトの動き

Cubeオブジェクトを新規作成し、名前をFloorに変更。

座標をすべて0にして、スケールを変更しました。

このような形状で、配置されています。

Floorに動きをつけます。

FloorMove.csを作成し、Floorに追加します。

FloorMove.csを記述します。

プレイして、まずは往復運動を確認します

プレーヤーのオブジェクト

もう一つCubeオブジェクトを作り、名前をPlayerに変更。

Yを少し上げて、上から落とすように配置します。

このように配置しています。

Playerにリジッドボディをつけます。

親子関係を取る

PlayerSet.csを作成し、Playerに追加します。

PlayerSet.csを記述します。

プレイして動きを確認しましょう。

クリックでジャンプして、床に着地します。

new GameObject()により、親としての空のオブジェクト生成。

「空のオブジェクト」の子オブジェクトとなって、床と同一の動きを保ちます。

わざわざ「空のオブジェクト」を作成するのは、落下時の変形を防ぐためです。

床(Floor)を親とした場合、落下したときに親のスケールの影響を受けて、オブジェクトがゆがんでしまうことがあります。

関連記事:【Unity C#】落下中のオブジェクトのゆがみ

ここでは、「空のオブジェクト」の子オブジェクトとなることで、Floorのスケールとの関連性を無くしています。

動く床の実装については、こちらの方法もあります。

関連記事:
動く床の上で一緒に移動する(方法2)
乗れば下降していく床
エリアに入れば自動で動く(ムービングウォーク)