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

一、配置输入动作

打开"项目设置 → 输入映射",创建 move_leftmove_rightmove_upmove_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)
相关推荐
狂人开飞机1 天前
14、游戏手感与视觉打磨
游戏·游戏引擎·godot
狂人开飞机2 天前
15、音频系统
游戏引擎·godot
狂人开飞机2 天前
16、粒子线条与视觉特效
游戏引擎·godot
狂人开飞机3 天前
11、UI系统
游戏引擎·godot
狂人开飞机3 天前
10、相机系统
游戏引擎·godot
烛阴5 天前
Godot 4 入门(03):用第一份 GDScript 驱动节点
godot
点心的游戏开发世界5 天前
GDScript 入门笔记:目录
开发语言·笔记·游戏引擎·godot
点心的游戏开发世界7 天前
GDScript 入门笔记(十六):文件读写与数据持久化
开发语言·笔记·游戏引擎·godot
点心的游戏开发世界7 天前
GDScript 入门笔记(十三):字符串操作
开发语言·笔记·游戏引擎·godot