Godot 4 入门(04):CharacterBody2D 实现八方向移动

一、配置输入动作

打开"项目设置 → 输入映射",创建 move_left、move_right、move_up、move_down,分别绑定 A/D/W/S 和方向键。代码只关心动作名,将来增加手柄无需重写移动逻辑。

把 Player 根节点类型更改为 CharacterBody2D,

同步修改脚本:

gdscript 复制代码
extends CharacterBody2D

@export var speed: float = 220.0

func _physics_process(_delta: float) -> void:
    var direction := Input.get_vector(
        "move_left", "move_right", "move_up", "move_down"
    )
    velocity = direction * speed
    move_and_slide()

Input.get_vector() 把四个动作合成 Vector2,并把长度限制在 1,因此同时按 W+D 不会比只按 D 更快。velocity 表示像素/秒,move_and_slide() 已按物理时间步处理位移,不要再给 velocity 乘 delta。

移动物理对象应放在 _physics_process(),它以固定物理频率运行;普通视觉效果更适合 _process()。

二、停止与移动

没有输入时 direction 为 (0, 0),velocity 也随之归零。若希望有加速和减速,可替换赋值:

gdscript 复制代码
velocity = velocity.move_toward(direction * speed, 1200.0 * _delta)
相关推荐
狂人开飞机18 天前
23、实战平台跳跃游戏
游戏·游戏引擎·godot
狂人开飞机19 天前
27、实战物理益智游戏
游戏·游戏引擎·godot
狂人开飞机20 天前
21、游戏架构设计模式
游戏·游戏引擎·godot
狂人开飞机22 天前
14、游戏手感与视觉打磨
游戏·游戏引擎·godot
狂人开飞机22 天前
15、音频系统
游戏引擎·godot
狂人开飞机22 天前
16、粒子线条与视觉特效
游戏引擎·godot
狂人开飞机23 天前
11、UI系统
游戏引擎·godot
狂人开飞机23 天前
10、相机系统
游戏引擎·godot
烛阴25 天前
Godot 4 入门(03):用第一份 GDScript 驱动节点
godot