Unity事例ノート

UNITY

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

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

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

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

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

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

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

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

Udemy わかる!Unity C# ゲーム開発講座

床オブジェクトの動き

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)
親オブジェクトと子オブジェクトの取得

\ Udemyで講座はじめました /

Udemy わかる!Unity C# ゲーム開発講座

SCHOOL教室案内