Top.Mail.Ru
Ответы

Godot Engine не реагирует на Input.get_action_pressed("right") и реагирует на Input.get_action_pressed("move_right")

Здравствуйте, пишу код на движение по типу такого:

extends Area2D
export var speed = 400

func _process(delta):
var velocity = Vector2.ZERO # The player's movement vector.
if Input.is _action_pressed("move_right"):
velocity.x += 1
if Input.is _action_pressed("move_left"):
velocity.x -= 1
if Input.is _action_pressed("move_down"):
velocity.y += 1
if Input.is _action_pressed("move_up"):
velocity.y -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play()
else:
$AnimatedSprite.stop()
print(velocity)

Но, если я вдруг меняю клавиши в настройках проекта на названия right, left и т.д.
и пишу код абсолютно такой же, но меняю названия кнопок, ничего не двигается. С учетом того, что я прописываю проверку print(velocity) и вектор показывает, что персонаж двигается и его координаты меняются на величину переменной speed.

func _process(delta):
var velocity = Vector2.ZERO # The player's movement vector.
if Input.is_action_pressed("right"):
velocity.x += 1
if Input.is_action_pressed("left"):
velocity.x -= 1
if Input.is_action_pressed("down"):
velocity.y += 1
if Input.is_action_pressed("up"):
velocity.y -= 1

По дате
По рейтингу
Аватар пользователя
Мастер

Предполагаю, что ты неправильно настроил кнопки в настройках проекта. Проверь.


Также хочу предложить работенку. Наша молодая команда создаёт порт римки на мобильные устройства. Требуются энтузиасты. Поможем с обучением и многое другое. Если интересно, то пиши в дискорде по нику schnele

Аватар пользователя
Оракул

В душе не чаю, но вот тебе ответ чатгпт


В коде, который вы предоставили, есть ошибка в использовании метода Input.is _action_pressed(). Вместо Input.is _action_pressed("right"), вам нужно использовать Input.is _action_pressed("move_right"), так как в ваших действиях (actions) определены именно такие названия ("move_right", "move_left", и так далее).

Измените код следующим образом:


extends Area2D
export var speed = 400

func _process(delta):
var velocity = Vector2.ZERO # Вектор движения игрока.
if Input.is _action_pressed("move_right"):
velocity.x += 1
if Input.is _action_pressed("move_left"):
velocity.x -= 1
if Input.is _action_pressed("move_down"):
velocity.y += 1
if Input.is _action_pressed("move_up"):
velocity.y -= 1

if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play()
else:
$AnimatedSprite.stop()

print(velocity)

Убедитесь, что ваши действия (actions) в настройках проекта соответствуют тем, которые вы используете в коде. Если после этого код все равно не работает, убедитесь, что вы правильно настроили клавиши в проекте и проверьте, не возникает ли конфликтов с другими участками кода или настройками.