Это потому, что вы устанавливаете переменную «вращение» на 0.
Vector3 yRot = Vector3.up * rotation * rotation_speed * Time.deltaTime;
В результате получается 0, а ваш объект не вращается.
Я бы порекомендовал вам сделать что-то вроде этого в вашем методе обновления:
if (Input.GetMouseButton (0))
{
rotation = -1;
}
else if (Input.GetMouseButton (1))
{
rotation = 1;
}
else
{
//Now when the rotation is positive,
//the object starts to rotate towards negative, but stops at 0
//Same is true when the rotation is negative
if (rgb.rotation.y > 0)
{
rotation = -1;
}
else if (rgb.rotation.y < 0)
{
rotation = 1;
}
else
{
//This needs to be added here to stop the object from rotating
//when the y rotation is already 0
rotation = 0;
}
}
Теперь он поворачивается к 0, когда вы ничего не нажимаете. Также не используйте Time.deltaTime
в FixedUpdate
.
Редактировать:
Так что я заметил, что с помощью этого метода он не совсем никогда не возвращается к 0. Он подходит очень близко, но не достаточно близко. Добавляя это к FixedUpdate
, вращение у округляется до 0.
if (Mathf.Abs(targetRot.y) < 0.00001f)
{
targetRot = Quaternion.Euler(new Vector3(targetRot.x, 0, targetRot.z));
}