reckfellENGINE

Прыжок, приземление сверху и отскок

Скорость прыжка, контактные нормали и проверка реального столкновения после MoveAndSlide.

На этой странице

Используется полный SquashPlayer.cs. Дополнительный скрипт или второе соединение сигналов для прыжка не нужны.

Прыжок

IsActionJustPressed("jump") вместе с IsOnFloor() задаёт Y скорости JumpSpeed = 8. Удержание Space не создаёт новый прыжок каждый кадр; новое нажатие в воздухе также не добавляет скорость. Гравитация 24 уменьшает вертикальную скорость с учётом физического delta.

Перед MoveAndSlide() значение falling сохраняет факт движения вниз. После перемещения скорость может уже быть обнулена контактом: проверять только новый Velocity.Y для определения падения поздно.

Приземление на противника

Код просматривает GetSlideCollisionCount() и GetSlideCollision(i) после перемещения. Успешное попадание сверху требует одновременно:

  • до перемещения персонаж двигался вниз;
  • GetNormal().Y > 0.5 — нормаль контакта направлена преимущественно вверх;
  • столкновение принадлежит SquashMob;
  • TrySquash() вернул true.

Сравнение только высот объектов недостаточно: близкий объект ниже игрока ещё не означает состоявшееся столкновение. Контакт с обычным полом не даёт очков, потому что его тип — StaticBody3D.

Отскок

После успешного попадания задаётся BounceSpeed = 6, управление остаётся активным. Метод сразу выходит, чтобы та же физическая обработка не объявила поражение из-за пересечения области с уже удаляемым противником. Его флаг и QueueFree() не позволяют начислить очко дважды.

Ожидаемый результат: приземление на верх куба даёт одно очко и отбрасывает игрока вверх. Боковой контакт без подходящей нормали не считается попаданием сверху. Правило бокового поражения.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.