Unity事例ノート

UNITY

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

動く床の実装について、前回記事でも取り上げましたが、今回は別の方法でつくってみます。

前回記事:動く床の上で一緒に移動する(方法1)

前回と動きはまったく同じなのですが、最初に床と空のオブジェクトの親子関係をつくっておく方法です。

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

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

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

関連記事:
乗れば下降していく床
エリアに入れば自動で動く(ムービングウォーク)

床オブジェクトの動き

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

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

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

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

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

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

FloorMove.csを記述します。

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

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

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

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

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

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

動く床に乗るスクリプト

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

PlayerSet.csを記述します。

ゲームオブジェクトのフィールドに、GameObjectを入れます。

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

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

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

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

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

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

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

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

関連記事:
乗れば下降していく床
エリアに入れば自動で動く(ムービングウォーク)