@yraiv

Как сделать кайот-джамп?

Если игрок выходит за пределы земли, с которой можно было прыгать, то хочется чтоб еще некоторое время прыжок был доступен для игрока.
ситуация:в воздухе расположены блоки и игрок может прыгать по ним, но хочется сделать мини задержку, чтоб если он чуть опоздал, то в течение еще n времени (0.2-0.3 секунды), он мог нажать пробел и был прыжок.
Не могу понять логику как сделать
Я делал вот так, но нет идеи для логики правильной
private bool IsGrounded()
    {
        
        Vector3 spherePosition = _LegsShpere.position - new Vector3(0f, 0.1f, 0f);

        float radius = sphereRadius;
        int layerMask = LayerMask.GetMask("BlockLayer"); 
        Collider[] hitColliders = Physics.OverlapSphere(spherePosition, radius, layerMask);

        foreach (var hitCollider in hitColliders)
        {
            if (hitCollider.CompareTag("Block"))
            {

                _animator.SetBool("Jump", false);
                return true;
            }
        }

    
          
            return false;

        

    }

Как будет лучше/проще сделать это?
Хотел использовать корутину, но так и не смог придумать в какой момент и в какой последовательности. Ведь тут ситуация такая, что игрок по разным причинам может отрываться от земли, если он просто с платформы падать начинает, то он должен прыгнуть, а вот если вместо платформы он просто прыжок нажал, то связь с землей также теряется и надо как-то одно от другого отделить т.к двойной прыжок точно не нужен
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 2
fenrir1121
@fenrir1121
Начни с документации
На гитхабе набираете в поиск coyote time и получаете десяток туториалов вроде этого, выбираете самый подходящий для вас.

Я бы рекомендовал отталкиваться от механик из Celeste, где по-моему субьективному мнению лучший мувмент среди всех платформеров и на времени койота, спайк джампах, гипер дэшах и прочем построены целые головоломки. Они довольно подробно по фреймам описаны и на том же гитхабе есть репозитории, где они целиком реализованы, искать по фразе Celeste Movement

Ну и можно глянуть этот разбор, в конце приложен код с комментариями
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Фиксировать момент, когда игрок последний раз оторвался от земли и причину. При прыжке сравнивать с текущим временем и прыгать только если это было достаточно недавно и только по причине схода с платформы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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