Godot 2D WASD运动
Godot 2D WASD Movement
我在 2D Godot 项目上遇到了问题。
我在 KinematicBody2D 脚本中写了以下代码:
扩展 KinematicBody2D
export var speed = 250
var motion = Vector2()
func _physics_process(delta):
motion = Vector2.ZERO
if Input.is_action_just_pressed("ui_left"):
motion.x = -speed
if Input.is_action_just_pressed("ui_right"):
motion.x = speed
if Input.is_action_just_pressed("ui_up"):
motion.y = -speed
if Input.is_action_just_pressed("ui_down"):
motion.y = speed
motion = move_and_slide(motion)
pass # Replace with function body.
问题是当我按下 W、A、S、D 或箭头键时,我的播放器只移动了几个像素就停止了。
我做错了什么?
谢谢大家!
函数 is_action_just_pressed
告诉您指定的动作※是否 只是 按下。保持动作不会继续返回true。
结合您要擦除 motion
每个物理帧 motion = Vector2.ZERO
的事实,导致对象移动一个物理帧然后停止。
如果您想知道当前是否按下了操作 - 独立于何时开始按下 - 请改用 is_action_pressed
。
※:您可以使用这些功能的操作在项目设置中配置。您会在“输入地图”选项卡上找到它们。
我在 2D Godot 项目上遇到了问题。
我在 KinematicBody2D 脚本中写了以下代码:
扩展 KinematicBody2D
export var speed = 250
var motion = Vector2()
func _physics_process(delta):
motion = Vector2.ZERO
if Input.is_action_just_pressed("ui_left"):
motion.x = -speed
if Input.is_action_just_pressed("ui_right"):
motion.x = speed
if Input.is_action_just_pressed("ui_up"):
motion.y = -speed
if Input.is_action_just_pressed("ui_down"):
motion.y = speed
motion = move_and_slide(motion)
pass # Replace with function body.
问题是当我按下 W、A、S、D 或箭头键时,我的播放器只移动了几个像素就停止了。
我做错了什么?
谢谢大家!
函数 is_action_just_pressed
告诉您指定的动作※是否 只是 按下。保持动作不会继续返回true。
结合您要擦除 motion
每个物理帧 motion = Vector2.ZERO
的事实,导致对象移动一个物理帧然后停止。
如果您想知道当前是否按下了操作 - 独立于何时开始按下 - 请改用 is_action_pressed
。
※:您可以使用这些功能的操作在项目设置中配置。您会在“输入地图”选项卡上找到它们。