Unity事例ノート

UNITY

動く床の上で一緒に移動する

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

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

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

動く床から落下したとき、親のスケールの影響を受けてオブジェクトが変形してしまう問題があります。

落下中のオブジェクトのゆがみ

これを防止するには、スケールの影響を受けない空オブジェクトを親にする必要があります。

関連記事:
エレベーターをつくる
乗れば上昇していく床
乗れば下降していく床
行き帰りできるムービングウォーク
エリアに入れば自動で動く(ムービングウォーク)
階段を上るオブジェクト移動(SimpleMove)
親オブジェクトと子オブジェクトの取得

床オブジェクトの動き

Cubeオブジェクトを作成して、名前をFloorに変更します。

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

このようにオブジェクトが配置されています。

空のオブジェクトを作成します。

GameObject(空のオブジェクト)の中に、Floorを入れて、親子関係をつくります。

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

FloorMove.csを記述します。

ゲームプレイして、Floorが動くことを確認しましょう。

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

Cubeオブジェクトを作成して、名前をPlayerに変更します。

Yを少し上げて、上から落下させるように置きました。

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

シーンビューではこのように配置されています。

動く床に乗るスクリプト

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

PlayerMove.csを記述します。

床に着地している時は、GameObject(空のオブジェクト)を親に。

床から離れると、親子関係から外れるしくみです。

ゲームプレイしてみましょう。

親子関係のONとOFFは、床と一緒に動かすために必須のスクリプトになります。

しかし、Floorを親するだけでは、落下したとき、親のスケールの影響でサイズ変更されてしまいます。

このように空のオブジェクトを利用すれば、落下時の変形も解決できます。

関連記事:
エレベーターをつくる
乗れば上昇していく床
乗れば下降していく床
行き帰りできるムービングウォーク
エリアに入れば自動で動く(ムービングウォーク)
階段を上るオブジェクト移動(SimpleMove)
親オブジェクトと子オブジェクトの取得

SCHOOL教室案内