Я работаю над проектом Unity. Есть автомобильный стеклоочиститель, и я хочу повернуть его так, чтобы, когда я нажал кнопку «Включение дворников», стеклоочистители начали вращаться с 0,0,0 до 0,0, -45 и начали лептеть. Но когда я нажимаю «выключатели стеклоочистителей», стеклоочистители должны повернуться обратно до 0,0,0. Например, если текущее вращение дворников составляет 0,0, -20, и я нажимаю клавишу «Выключение стеклоочистителей», они должны иметь значение rotateTowards 0,0,0. Кроме того, если я снова нажму «включение стеклоочистителей», стеклоочистители должны начать вращаться с 0,0,0 до 0,0, -45. Теперь ситуация такова, что стеклоочистители вращаются, но когда я нажимаю «выключатели стеклоочистителей», стеклоочистители останавливаются точно в той же текущей точке вращения, где они находятся, например, (0,0, -30). И когда я снова нажимаю кнопку «Включение стеклоочистителей», стеклоочистители начинают движение с необычной точки вращения. Вот мой код:
using UnityEngine;
using System.Collections;
public class Wipers : MonoBehaviour
{
[SerializeField] protected Vector3 m_from = new Vector3(0.0F, 0.0F, 0.0F);
[SerializeField] protected Vector3 m_to = new Vector3(0.0F, -45.0F, 0.0F);
[SerializeField] protected float m_frequency = 1.0F;
protected virtual void Update()
{
if (ControlFreak2.CF2Input.GetAxis ("wipers") != 0)
{
Quaternion from = Quaternion.Euler(this.m_from);
Quaternion to = Quaternion.Euler(this.m_to);
float lerp = 0.5F * (1.0F + Mathf.Sin(Mathf.PI * Time.realtimeSinceStartup * this.m_frequency));
this.transform.localRotation = Quaternion.Lerp(from, to, lerp);
}
}
}