transform.positionを使い、斜め上の方向へ行くオブジェクトの動きを作ってみましょう。
プレーヤーがポイントに触れると、指定のY座標に達するまで、斜めに向けて自動移動していきます。
関連記事:
行き帰りできるムービングウォーク
エリアに入れば自動で移動(ムービングウォーク)
エレベーターをつくる
触れると他の位置へワープする
空間の中でクリックした位置へ行く
指定した座標(目的地点)へ行く
2点間の往復運動をくり返す
2つの座標(目的地)へ行く
触れると2地点を行き来するオブジェクト
キーを押すと特定の位置にワープ
指定の高さまで自動で動く
PlaneとSphereを作成します。
Sphereの位置を中心からずらして、リジッドボディを追加。
リジッドボディのConstraintsを展開し、回転を固定にチェックを入れます。
もうひとつSphereを作成し、名前をPointに変更。
サイズを0.5に縮小して、トリガーにするにチェックを入れます。
Cubeを作成し、位置を変更します。
それぞれのオブジェクトに色をつけます。
ゲームビューではこのように見えています。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.csを記述します。
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 29 30 31 32 33 34 35 36 37 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { private float speed = 3.0f; private bool flag; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime *speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime *speed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); if (flag) { transform.position = new Vector3 ( transform.position.x + 0.1f, transform.position.y + 0.1f, transform.position.z); } if(transform.position.y > 3) flag = false; } void OnTriggerEnter(Collider other) { if (other.gameObject.name == "Point") flag = true; } } |
ゲームプレイして、Sphereを操作しましょう。
Pointにぶつかると、斜め45°に向けて自動移動します。
Y(高さ)が3のところまで行けば、移動を止めます。
関連記事:
行き帰りできるムービングウォーク
エリアに入れば自動で移動(ムービングウォーク)
エレベーターをつくる
触れると他の位置へワープする
空間の中でクリックした位置へ行く
指定した座標(目的地点)へ行く
2点間の往復運動をくり返す
2つの座標(目的地)へ行く
触れると2地点を行き来するオブジェクト
キーを押すと特定の位置にワープ