求助,unity3d中如何实现 rotation功能

2025-01-27 03:51:31
推荐回答(1个)
回答1:

您好,希望以下回答能帮助您 * 用到了unity3d非常好的协同机制实现这一点,OnMouseDown事件表示鼠标已作了射线判断得到了对象。 * 拖拽时保持z轴不变,因为屏幕是xy二维的,空间是三维的。 * */ IEnumerator OnMouseDown () { var camera = Camera.mainCamera; if (camera) { //转换对象到当前屏幕位置 Vector3 screenPosition = camera.WorldToScreenPoint (transform.position); //鼠标屏幕坐标 Vector3 mScreenPosition=new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); //获得鼠标和对象之间的偏移量,拖拽时相机应该保持不动 Vector3 offset = transform.position - camera.ScreenToWorldPoint( mScreenPosition); print ("drag starting:"+transform.name); //若鼠标左键一直按着则循环继续 while (Input.GetMouseButton (0)) { //鼠标屏幕上新位置 mScreenPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); 如您还有疑问可继续追问。