3D物体的拖拽不同于2D的。因为3D物体有x,y,z当然。实际拖拽还是在XZ平面。只是多了几个转换
1 using UnityEngine; 2 using System.Collections; 3 4 public class tuotuo : MonoBehaviour 5 { 6 7 Vector3 currPosition; //拖拽前的位置 8 Vector3 newPosition; //拖拽后的位置 9 10 // Use this for initialization 11 void Start() 12 { 13 14 } 15 16 // Update is called once per frame 17 void Update() 18 { 19 20 } 21 22 /// <summary> 23 /// 开始拖拽 3D物体 拖拽是在平面拖拽 即 xy平面 24 /// </summary> 25 void OnMouseDrag() 26 { 27 //1:把物体的世界坐标转为屏幕坐标 (依然会保留z坐标) 28 currPosition = Camera.main.WorldToScreenPoint(transform.position); 29 30 //2:更新物体屏幕坐标系的x,y 31 currPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, currPosition.z); 32 33 //3:把屏幕坐标转为世界坐标 34 newPosition = Camera.main.ScreenToWorldPoint(currPosition); 35 36 //4:更新物体的世界坐标 37 transform.position = newPosition; 38 } 39 }