reckfellENGINE

Управление через Input Map

Настройте действия движения, получите вектор ввода и отделите управление от меню.

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

Создайте действия

Откройте Project → Project Settings → Input Map. Добавьте имена без пробелов и с точным регистром:

ДействиеКлавиша
move_leftA или стрелка влево
move_rightD или стрелка вправо
move_upW или стрелка вверх
move_downS или стрелка вниз

Одному действию можно назначить несколько клавиш и кнопки геймпада. Игра читает имя действия, а не конкретную раскладку.

Двигайте объект

Создайте Sprite2D с текстурой в пределах окна, например в (320, 180). Прикрепите MoveMarker.cs, соберите C# и запустите текущий префаб с F6:

C#
using Reckfell;

public partial class MoveMarker : Entity2D
{
    [Export] public float Speed { get; set; } = 250.0f;
    public bool GameplayEnabled { get; set; } = true;

    public override void _PhysicsProcess(double delta)
    {
        if (!GameplayEnabled)
            return;

        Vector2 direction = Input.GetVector(
            "move_left", "move_right", "move_up", "move_down");
        Position += direction * Speed * (float)delta;
    }
}

При Speed = 250 объект проходит 250 пикселей за секунду вдоль одной оси. GetVector() ограничивает длину вектора единицей: диагональ не ускоряет движение. Для аналогового стика функция также учитывает мёртвую зону.

Этот пример напрямую меняет положение и не обрабатывает столкновения. Для персонажа со стенами используйте CharacterBody2D, Velocity и MoveAndSlide() из примера 2D. В 3D выбирайте CharacterBody3D.

Удержание и одиночное нажатие

Input.IsActionPressed() возвращает состояние удержания. Input.IsActionJustPressed() сообщает о начале нажатия в текущем кадре или физическом такте; вызов не «забирает» нажатие у другого скрипта. Для реакции после обработки интерфейсом используйте _UnhandledInput() и InputEvent.IsActionPressed().

Открытое меню само по себе не блокирует опрос Input. Установите GameplayEnabled = false из контроллера меню или приостанавливайте игровую ветку дерева. Порядок обработки событий.

Если управление не работает

  • Проверьте, что окно игры получило фокус.
  • Сверьте все четыре имени действий с кодом; их создание не назначает клавиши автоматически.
  • Проверьте прикрепление скрипта, сборку и GameplayEnabled.
  • Не умножайте CharacterBody2D.Velocity на delta перед MoveAndSlide(): скорость задаётся в пикселях в секунду, а шаг учитывает само движение.
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

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

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

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