在开发过程中,完成了鼠标控制物体旋转之后发现点小BUG,因为物体720度旋转需要“Mouse X”和“Mouse Y”一起执行,为了使旋转的效果更为舒服使用了Rotate函数进行实现,但是相应的问题就出现了,Rotate是旋转函数,说明在执行控制物体旋转的时候物体是会一直进行旋转的,包括鼠标此时没有移动的时候或者在鼠标移动的时候,都会出现有物体自转的异常现象,我对解决这个小BUG的具体思路是:
当鼠标进行拖拽时,执行物体旋转功能,当鼠标位置不改变时不进行物体旋转功能,也就是说,鼠标在按下时,要再加一层判断,判断当前鼠标位置是否有移动,如果有即证明当前是在进行物体旋转,如果没有证明当前是在查看当前视角的物体,基于这个思路,完整的代码如下:
Vector3 v3; bool isRotate; Vector2 beforMousePos; Vector2 currentMousePos; public void Start() { beforMousePos = Input.mousePosition; currentMousePos = Input.mousePosition; } private void OnMouseDrag() { isRotate = true; v3 = new Vector3(Time.deltaTime * 200 * Input.GetAxis("Mouse Y"), -Time.deltaTime * 200 * Input.GetAxis("Mouse X"), RobotDemoModel.Robot.transform.rotation.z); } private void OnMouseUp() { isRotate = false; } private void Update() { currentMousePos =
Unity鼠标控制物体旋转要点记录
最新推荐文章于 2024-05-26 08:45:00 发布