Unity 3Dゲーム
オブジェクトをマウスでz軸方向にドラッグ&ドロップしたい
unity,C#共に初心者です。現在このような3Dゲームを作っています。
卵のオブジェクトをマウスでz軸方向にドラッグ&ドロップできるようにしたいです。
具体的には、卵を持った状態でカーソルを下に移動するとオブジェクトが手前に移動し、ドラッグをやめるとオブジェクトが消えるようにしたいです。
http://believeinyourself.hateblo.jp/entry/2014/05/11/074756
こちらのページを参考に以下のようなコードを書きましたが、xy方向にしか動きません。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class sc : MonoBehaviour 6{ private Vector3 screenPoint; 7 private Vector3 offset; 8 9 void OnMouseDown() 10 { 11 //カメラから見たオブジェクトの現在位置を画面位置座標に変換 12 screenPoint = Camera.main.WorldToScreenPoint(transform.position); 13 14 //取得したscreenPointの値を変数に格納 15 float x = Input.mousePosition.x; 16 float y = Input.mousePosition.y; 17 18 //オブジェクトの座標からマウス位置(つまりクリックした位置)を引いている。 19 //これでオブジェクトの位置とマウスクリックの位置の差が取得できる。 20 //ドラッグで移動したときのずれを補正するための計算だと考えれば分かりやすい 21 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(x, y, screenPoint.z)); 22 } 23 24 void OnMouseDrag() 25 { 26 //ドラッグ時のマウス位置を変数に格納 27 float x = Input.mousePosition.x; 28 float y = Input.mousePosition.y; 29 30 Debug.Log(x.ToString() + " - " + y.ToString()); 31 32 //ドラッグ時のマウス位置をシーン上の3D空間の座標に変換する 33 Vector3 currentScreenPoint = new Vector3(x, y, screenPoint.z); 34 35 //上記にクリックした場所の差を足すことによって、オブジェクトを移動する座標位置を求める 36 Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenPoint) + offset; 37 38 //オブジェクトの位置を変更する 39 transform.position = currentPosition; 40 } 41 42 // Start is called before the first frame update 43 void Start() 44 { 45 46 } 47 48 // Update is called once per frame 49 void Update() 50 { 51 52 } 53} 54
試したこと
決まったルートしか通れないようにしたり、球体状の軌道を通るようにしたりしてみましたが、上手くいきませんでした。いい方法を知っている方がいらっしゃったら教えていただきたいです。よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
unity バージョン2020.3.1f1 Personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 00:20 編集
2021/04/10 10:33
2021/04/11 16:00