ある位置まで来ると、プレーヤーが速く、自動で動いていくオートウォークの機能をつくってみましょう。
Cubeがエリア内に入れば、平面エスカレーターのように移動。
少しスピードアップして、左から右へ流れていきます。
関連記事:
行き帰りできるムービングウォーク
動く床の上で一緒に移動する
乗れば上昇していく床
乗れば下降していく床
エリアに入れば飛び上がる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる
斜め上に向けて自動移動
平面エスカレーターのような動き
PlaneとCubeを作成します。
Cubeにリジッドボディを追加し、位置を変えます。
シーンビューの上から見れば、このように配置されています。
Planeにボックスコライダーを追加します。
ボックスコライダーのサイズを変更し、トリガーにするにチェック。
このボックスコライダーが、ムービングウォークの移動エリアになります。
MoveWalk.csを作成し、Cubeに追加します。
MoveWalk.csを記述します。
(ここではY座標を0.5にしていますが、それぞれのプレーヤーのY座標に合わせて調整してください。)
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 MoveWalk : MonoBehaviour { private float cubeSpeed = 3.0f; private float autoSpeed = 0.1f; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * cubeSpeed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime *cubeSpeed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); } void OnTriggerStay(Collider other) { if (other.gameObject.name == "Plane") { transform.position = new Vector3 ( transform.position.x + autoSpeed, 0.5f, transform.position.z ); } } } |
ゲームプレイして、ボックスコライダー内に侵入します。
エリア内にいる間は、右方向にむかって自動で移動します。
ベルトコンベアーのような動きや、一方向にむけた高速移動させたい場合に、便利な仕組みです。
関連記事:
行き帰りできるムービングウォーク
動く床の上で一緒に移動する
乗れば上昇していく床
乗れば下降していく床
エリアに入れば飛び上がる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる
斜め上に向けて自動移動