在C#UNITY中,每步始终将2d对象旋转45度

时间:2019-05-03 19:00:58

标签: c# unity3d rotation 2d degrees

我正在尝试为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;
            }

0 个答案:

没有答案