Unity鼠标控制物体旋转要点记录

在开发过程中,完成了鼠标控制物体旋转之后发现点小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 = 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值