Последовательно поворачивайте двумерный объект на 45 градусов каждые шаги в C # UNITY - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь сделать систему вращения для 2-го объекта. Поворот контролируется мышью (вращайте мышь вокруг объекта, и он «смотрит» на мышь). Я сделал систему для плавного вращения, но я хочу, чтобы когда пользователь нажимал клавишу 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;
            }
...