Я работаю над элементами управления для двуногого танка, который имеет функцию повышения / da sh. Когда режим boost / da sh активируется нажатием кнопки, танк переходит от традиционного обстрела WASD к чему-то вроде реактивного истребителя, но на земле. Теперь, когда проигрыватель пытается повернуться во время усиления, камера должна наклониться в направлении поворота, чтобы сделать его более плавным.
Вот видео, показывающее мою проблему
Это сценарий, добавленный к основной камере
public class PlayerCameraTilt : MonoBehaviour
{
private Camera viewCam;
private CharacterController characterController;
public float tiltAmount = 10f;
private void Start()
{
viewCam = GetComponent<Camera>();
characterController = GetComponentInParent<CharacterController>();
}
private void Update()
{
if (characterController.GetComponent<PlayerController>().movementState == MovementModes.boost)
{
float inputValue = Input.GetAxis("MoveHorizontal") * tiltAmount;
Vector3 euler = transform.localEulerAngles;
euler.z = Mathf.Lerp(euler.z, -inputValue, 5f * Time.deltaTime);
transform.localEulerAngles = euler;
}
else
{
Vector3 euler = transform.localEulerAngles;
euler.z = Mathf.Lerp(euler.z, 0f, 5f * Time.deltaTime);
transform.localEulerAngles = euler;
}
}
}
Он вроде работает, НО только в одном направлении вращения, а именно в положительном направлении. Если я поверну в другую сторону, угол станет отрицательным и будет вращаться на 360 градусов, пока не достигнет 0 градусов.
Я пробовал использовать встроенные методы Quaternion, такие как Quaternion.Rotate () или Quaternion.AngleAxis. (), но они не сработали, потому что Quaternion.Rotate () не наклоняет камеру, а полностью вращает ее. Quaternion.AngleAxis () работает со всем пределом угла наклона, но также делает что-то с другой осью, которую я не хочу изменять.
Есть ли способ предотвратить полный поворот камеры на 360 ° когда вход оси становится отрицательным и просто наклоняется под небольшим углом?