Unity按住左键旋转物体,按住右键移动物体,移动端单指旋转物体,双指移动物体

来源:互联网 发布:不支持后端数据库设计 编辑:程序博客网 时间:2024/06/08 15:37

功能比较简单,直接上代码吧:

public class ModelController : MonoBehaviour {    public Transform obj;    public Camera objCamera;//模型摄像机void Update () {#if UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID        //单指旋转物体        if (Input.touchCount == 1 && obj != null) {obj.Rotate(Vector3.up, -Input.GetAxis("Mouse X") * 10, Space.World);            obj.Rotate(Vector3.right, Input.GetAxis("Mouse Y") * 10, Space.World);        }        //双指移动物体        else if (Input.touchCount > 1 && obj != null) {            Vector2 point;            Vector3 targetScreenSpace = Camera.main.WorldToScreenPoint(obj.position);            Touch t1 = Input.GetTouch(0);            Touch t2 = Input.GetTouch(1);            point = t2.position;//实时手指位置             if (t1.phase == TouchPhase.Moved && t2.phase == TouchPhase.Moved) {                obj.position = objCamera.ScreenToWorldPoint(new Vector3(point.x,point.y, targetScreenSpace.z));            }        }        #elif UNITY_EDITOR        //按住左键旋转物体        if (Input.GetMouseButton(0) && obj != null){            if (Input.GetMouseButton(0)) {                obj.Rotate(Vector3.up, -Input.GetAxis("Mouse X") * 10, Space.World);                obj.Rotate(Vector3.right, Input.GetAxis("Mouse Y") * 10, Space.World);            }        }        //按住右键拖动物体        else if (Input.GetMouseButton(1) && obj != null)        {            Vector3 targetScreenSpace = objCamera.WorldToScreenPoint(obj.position);//用于获取物体的z轴坐标(物体离相机距离不变)            Vector3 point = Input.mousePosition;            obj.position = objCamera.ScreenToWorldPoint(new Vector3(point.x, point.y, targetScreenSpace.z));        }        #endif    }}



原创粉丝点击