エレベーターのように上昇していく床をつくってみましょう。
床に乗れば上がっていって、ある地点まで行けば停止します。
指定したY座標の位置でストップするように、プログラミングしてきます。
関連記事:
エレベーターをつくる
乗れば下降していく床
行き帰りできるムービングウォーク
階段を上るオブジェクト移動(SimpleMove)
動く床の上で一緒に移動する
領域に入っている間と離れたときに発生
エリアに入れば自動で動く(ムービングウォーク)
エリアに入れば飛び上がる
CharacterControllerによる移動
Cubeを作成し、名前をFloorに変更。
サイズと位置を変更します。
Sphereを作成して色をつけ、位置を変更します。
ゲームビューではこのように配置されています。
今回、Sphereの移動には、キャラクターコントローラーを使用します。
コンポーネントを追加 > 物理 > キャラクターコントローラー
上昇する床の作成
もう一つ床を作成します。
Cubeを作成し、名前をUpFloorに変更し、わかりやすいように色をつけます。
ゲームビューではこのように配置されています。
MoveUp.csを作成し、UpFloorに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveUp : MonoBehaviour { private Vector3 pos; public void MoveStart() { StartCoroutine("FloorMove"); } IEnumerator FloorMove() { while (pos.y < 3.0f) { pos = transform.position; transform.Translate(0, 0.02f, 0); yield return new WaitForSeconds(0.01f); } } } |
当たり判定の作成
もう一つの床へ移動したところに、当たり判定をつくります。
Cubeを作成して、名前をAreaに変更。
位置を変えて、トリガーにするにチェックを入れます。
Areaはこのように配置されています。
Areaを透明にしましょう。
マテリアルを作成し、Toumeiと名前をつけます。
Rendering ModeをFadeに変更。
アルベドから、Aの値を0にします。
Toumeiマテリアルを、Areaに追加します。
プレーヤーを操作
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 upFloor; 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") { upFloor.GetComponent<MoveUp>().MoveStart(); } } } |
UpFloorのフィールドに、UpFloorオブジェクトを入れます。
ゲームプレイして、十字キーでSphereを動かしてみましょう。
床に乗ってAreaに触れたタイミングで、UpFloorオブジェクトが上昇。
コルーチンが実行され、0.01秒ごとに0.02上がっていって、Yが3の位置でストップします。
関連記事:
エレベーターをつくる
乗れば下降していく床
行き帰りできるムービングウォーク
階段を上るオブジェクト移動(SimpleMove)
動く床の上で一緒に移動する
領域に入っている間と離れたときに発生
エリアに入れば自動で動く(ムービングウォーク)
エリアに入れば飛び上がる