0

我正在尝试为 2d 对象制作旋转系统。旋转由鼠标控制(围绕对象旋转鼠标,它正在“看着”鼠标)。我已经完成了平滑旋转的系统,但是我希望当用户按下 shift 时,他可以更精确地旋转对象,因为对象应该以 45 度的步长移动。我不知道该怎么做。

我尝试了一些方法来解决它,但没有任何结果。我成功地做到了,当您按下 shift 时,它会将对象旋转到最接近的 45 度角(0、45、90 等......),这需要在用户开始旋转之前发生一次。但我在实际轮换时需要帮助。

//Handle smooth rotating
            if (!Input.GetKey(KeyCode.LeftShift))
            {
               Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Gets the mouse position and converting to world units. 
               transform.rotation = Quaternion.LookRotation(Vector3.forward, mousePos - transform.position);
            }
            else //Handle 45deg rotation
            {
                var vec = transform.eulerAngles;
                vec.z = Mathf.Round(vec.z / 45) * 45;
                transform.eulerAngles = vec;
            }
4

0 回答 0