マウスクリックした座標に向けて、横にだけ移動できるオブジェクトを、作成しましょう。
画面上を左クリックしたところへ、SphereのX座標だけが移動します。
ターゲットの作成
空のオブジェクトを作成します。
MousePoint.csを作成し、GameObjectに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MousePoint : MonoBehaviour { private Vector3 mousePosition; private Vector3 objPosition; void Update() { if (Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; objPosition = Camera.main.ScreenToWorldPoint(mousePosition); this.transform.position = new Vector3(objPosition.x, 0 ,0); } } } |
クリックした位置へ、GameObjectのX座標を変えるスクリプトです。
このGameObjectをターゲットとします。
ターゲットへ行くスクリプト
続いて、ターゲットに向けて移動するオブジェクトをつくります。
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 29 30 31 32 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { public GameObject target; public float speed; public bool isTouch; void Start () { speed = 0.1f; target = GameObject.Find("GameObject"); bool isTouch = false; } private void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "GameObject" ) { bool isTouch = true; } } void Update() { if(isTouch == false) { transform.position = Vector3.MoveTowards(transform.position,target.transform.position,speed); } } } |
ゲームプレイして、画面上をクリックしてみましょう。
クリックのたびに動くGameObjectに向かって、SphereのX座標が移動。
GameObjectにぶつかるタイミングで、Sphereがストップします。