@frog1232

Можно ли прервать Кватернион до его завершения(РЕШЕНО)?

У меня есть физическая дверь. Через некоторое время, после того как дверь толкнёт какой-нибудь объект и откроет её, она закроется. Однако, если в этот момент дверь оттолкнёт что-то, то она будет дёргаться.

Так вот, как можно прервать Кватернион, который закрывает дверь?

private Quaternion _startRot;
    private bool _itOpens;

    [Header("Bools")]
    [SerializeField] public bool canOpen;

    [Header("Parametres")]
    [SerializeField] private float _timeToClose = 2f;
    [SerializeField] private float _closeSmooth = 1.5f;

    private void Start()
    {
        _startRot = transform.rotation;
    }

    private void Update()
    {
        if (transform.rotation != _startRot)
        {
            StopCoroutine(Closing());
            StartCoroutine(Closing());
        }

        if(transform.gameObject.GetComponent<Rigidbody>().velocity != new Vector3(0,0,0))
        {
            _itOpens = true;
        }
        else
        {
            _itOpens = false;
        }
    }

    private IEnumerator Closing()
    {
        if(_itOpens) yield break;
        yield return new WaitForSeconds(_timeToClose);
        transform.rotation = Quaternion.Slerp(transform.rotation, _startRot, Time.deltaTime * _closeSmooth);
    }
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
@always_drunkking
А в чем проблема сделать дверь через Hinge Joint ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы