マウスでドラッグして、オブジェクトを動かせるように、スクリプトを作成してみましょう。
今回の例では、3つのオブジェクトを用意して、それぞれマウスで掴んで移動できるようにします。
関連記事:
オブジェクトを掴んで動かす(斜めアングル)
マウスカーソルについていくオブジェクト
マウスカーソルに追従して左右に移動
クリックした空間にオブジェクトを置く
クリックした場所にオブジェクトを置く
オブジェクトをドラッグで移動する
Cube、Sphere、Capsuleを作成し、横並びに配置しました。
ObjectMove.csを作成し、3つのオブジェクトにそれぞれ追加します。
ObjectMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectMove : MonoBehaviour { void OnMouseDrag() { Vector3 objPos = Camera.main.WorldToScreenPoint(transform.position); Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objPos.z); transform.position = Camera.main.ScreenToWorldPoint(mousePos); } } |
ドラッグは、OnMouseDrag()を使います。
マウスカーソルの位置については、奥行き(Z)が不明です
そのため、オブジェクトのワールド座標を、スクリーン座標に変換してVector3型で取得。
カーソル位置のZ座標は、オブジェクトのZ座標として設定しています。
Vector型のカーソル位置を、ワールド座標に変換して、これをオブジェクトの位置としています。
ゲームプレイして、オブジェクトをドラッグで動かしてみましょう。
それぞれのオブジェクトをつかんで動かせるようになりました。
関連記事:
オブジェクトを掴んで動かす(斜めアングル)
マウスカーソルについていくオブジェクト
マウスカーソルに追従して左右に移動
クリックした空間にオブジェクトを置く
クリックした場所にオブジェクトを置く