2D 平台或俯视小游戏,角色根节点用 CharacterBody2D。下面挂 Sprite2D 和 CollisionShape2D(胶囊或矩形)。脚本挂在角色根上。
平台跳跃的最小脚本
gdscript
extends CharacterBody2D
@export var speed := 160.0
@export var jump_velocity := -320.0
var gravity: float = ProjectSettings.get_setting("physics/2d/default_gravity")
func _physics_process(delta: float) -> void:
if not is_on_floor():
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var dir := Input.get_axis("move_left", "move_right")
velocity.x = dir * speed
move_and_slide()不要写 position += ...。move_and_slide() 会按碰撞体滑动,踩地、撞墙都算过。
先映射按键
项目设置 → 输入映射,加:
move_left:A / 左箭头move_right:D / 右箭头jump:空格
get_axis 同时按左右会得到 0,省掉一堆 if。
俯视移动
去掉重力,把轴换成二维:
gdscript
var dir := Input.get_vector("move_left", "move_right", "move_up", "move_down")
velocity = dir * speed
move_and_slide()碰撞形状略小于贴图,走路才不会「衣角卡墙」。
