プレーヤーが乗ると、エレベーターのように下降していく床をつくってみましょう。
Sphereを操作し、もう一つの床に移動したタイミングで、床が降りていきます。
関連記事:
エレベーターをつくる
乗れば上昇していく床
行き帰りできるムービングウォーク
乗れば落下する床
階段を上るオブジェクト移動(SimpleMove)
動く床の上で一緒に移動する
領域に入っている間と離れたときに発生
エリアに入れば自動で動く(ムービングウォーク)
CharacterControllerによる移動
Cubeを作成し、名前をFloorに変更。
サイズと位置を変更します。
Sphereを作成して色をつけ、位置を変更します。
ゲームビューではこのように配置されています。
今回、Sphereの移動には、キャラクターコントローラーを使用します。
コンポーネントを追加 > 物理 > キャラクターコントローラー
SphereMove.csを作成して、Sphereに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { public GameObject dropFloor; public float speed = 3.0F; public float rotateSpeed = 3.0F; void Update() { CharacterController controller = GetComponent<CharacterController>(); transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0); Vector3 forward = transform.TransformDirection(Vector3.forward); float curSpeed = speed * Input.GetAxis("Vertical"); controller.SimpleMove(forward * curSpeed); } private void OnTriggerEnter(Collider other) { if (other.gameObject.name == "Area") { dropFloor.GetComponent<Rigidbody> ().useGravity = true; } } } |
キャラクターコントロラーのSimpleMoveを使って、Sphereを動かすプログラムです。
プレイして、動かしてみましょう。
十字キーで操作し、床からはみ出すと落下します。
降下する床の作成
もう一つ床を作成しましょう。
Floorを複製し、名前をDropFloorに変更。
色をつけて、位置を変更します。
ゲームビューではこのように配置されています。
DropFloorにリジッドボディを追加し、UseGravityのチェックを外します。
床をゆっくりと落下させたいので、抗力を10にしています。
当たり判定の作成
もう一つの床へ移動したところに、当たり判定をつくります。
Cubeを作成して、名前をAreaに変更。
位置を変えて、DropFloorの上に置き、トリガーにするにチェックを入れます。
Areaはこのように配置されています。
Areaを透明にしましょう。
マテリアルを作成し、Toumeiと名前をつけます。
Rendering ModeをFadeに変更。
アルベドから、Aの値を0にします。
Toumeiマテリアルを、Areaに追加します。
プレーヤーを操作
Sphereを選択し、DropFloorのフィールドに、DropFloorを入れましょう。
ゲームプレイして、もう一つの床に移動してみましょう。
床に乗れば、エレベーターのように降りていきます。
関連記事:
エレベーターをつくる
乗れば上昇していく床
行き帰りできるムービングウォーク
乗れば落下する床
階段を上るオブジェクト移動(SimpleMove)
動く床の上で一緒に移動する
領域に入っている間と離れたときに発生
エリアに入れば自動で動く(ムービングウォーク)