Unity 鼠标拖拽控制旋转物体
需求
鼠标左键拖拽, 控制物体旋转
摄像机固定不动, 可以使用下面的代码, 但是当摄像机移动到物体背后时, 出现拖拽旋转方向与摄像机在正面时相反的问题
gameObj.transform.Rotate(transform.up, -mPosDelta.x, Space.World);
gameObj.transform.Rotate(transform.right, mPosDelta.y, Space.World);
解决
gameObj.transform.Rotate(Camera.main.transform.up, -mPosDelta.x, Space.World);
gameObj.transform.Rotate(Camera.main.transform.right, mPosDelta.y, Space.World);
完整代码
Vector3 mPrevPos = Vector3.zero;
Vector3 mPosDelta = Vector3.zero;
private void Update()
{
if (Input.GetMouseButton(0))
{
mPosDelta = Input.mousePosition - mPrevPos;
gameObj.transform.Rotate(Camera.main.transform.up, -mPosDelta.x, Space.World);
gameObj.transform.Rotate(Camera.main.transform.right, mPosDelta.y, Space.World);
}
mPrevPos = Input.mousePosition;
}