Я пытаюсь сделать систему вращения для 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;
}