Если игрок выходит за пределы земли, с которой можно было прыгать, то хочется чтоб еще некоторое время прыжок был доступен для игрока.
ситуация:в воздухе расположены блоки и игрок может прыгать по ним, но хочется сделать мини задержку, чтоб если он чуть опоздал, то в течение еще 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;
}
Как будет лучше/проще сделать это?
Хотел использовать корутину, но так и не смог придумать в какой момент и в какой последовательности. Ведь тут ситуация такая, что игрок по разным причинам может отрываться от земли, если он просто с платформы падать начинает, то он должен прыгнуть, а вот если вместо платформы он просто прыжок нажал, то связь с землей также теряется и надо как-то одно от другого отделить т.к двойной прыжок точно не нужен