前提・実現したいこと
オブジェクトをクリックしたらマウスに追従するスクリプトを作成しています。
押下されたWorld座標を開始座標とし、押下されている間、Update()関数で開始座標の差分だけオブジェクトを動かすという方法で実装したいのですが、Input.mousePositionの座標がマウスを動かしても変化しないため差分がうまくとれません。
どのように改善すれば、Input.mousePositionの座標がうまくとれるでしょうか。
発生している問題・エラーメッセージ
マウスを動かしても、Input.mousePositionの値が画像のようにずっと同じで出力されてしまいます。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine.EventSystems; // 追加 4using UnityEngine; 5 6// IPointerClickHandlerを追加する 7public class Move : MonoBehaviour, IPointerDownHandler, IPointerUpHandler 8{ 9 private bool _isPushed = false; // マウスが押されているか押されていないか 10 private Vector3 _nowMousePosi; // 現在のマウスのワールド座標 11 12 13 // Start is called before the first frame update 14 void Start() 15 { 16 17 } 18 19 // Update is called once per frame 20 void Update() 21 { 22 Vector3 nowmouseposi; 23 Vector3 diffposi; 24 25 // マウスが押下されている時、オブジェクトを動かす 26 if (_isPushed) 27 { 28 //Debug.Log("マウスが押されています。"); 29 // 現在のマウスのワールド座標を取得 30 nowmouseposi = Camera.main.ScreenToWorldPoint(Input.mousePosition); 31 //Debug.Log("nowmouseposi" + nowmouseposi); 32 Debug.Log("ScreenToWorldPoint" + Camera.main.ScreenToWorldPoint(Input.mousePosition)); 33 // 一つ前のマウス座標との差分を計算して変化量を取得 34 //Debug.Log("_nowMousePosi" + _nowMousePosi); 35 diffposi = nowmouseposi - _nowMousePosi; 36 // Y成分のみ変化させる 37 diffposi.x = 0; 38 diffposi.z = 0; 39 // 開始時のオブジェクトの座標にマウスの変化量を足して新しい座標を設定 40 //Debug.Log(GetComponent<Transform>()); 41 //Debug.Log("diffposi" + diffposi); 42 GetComponent<Transform>().position += diffposi; 43 // 現在のマウスのワールド座標を更新 44 _nowMousePosi = nowmouseposi; 45 } 46 } 47 48 public void OnPointerDown(PointerEventData eventData) 49 { 50 //Debug.Log("マウスが押されました"); 51 // 押下開始 フラグを立てる 52 _isPushed = true; 53 // マウスのワールド座標を保存 54 _nowMousePosi = Camera.main.ScreenToWorldPoint(Input.mousePosition); 55 } 56 57 public void OnPointerUp(PointerEventData eventData) 58 { 59 //Debug.Log("マウスが離されました"); 60 // 押下終了 フラグを落とす 61 _isPushed = false; 62 _nowMousePosi = Vector3.zero; 63 } 64}
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/29 02:11 編集
2020/11/29 14:58
2020/11/29 15:00
2020/11/29 22:14