Godot 4调用move_and_slide()报错参数过多,请求技术协助
问题解决:Godot 4中move_and_slide()参数报错
错误原因
Godot 4 重构了CharacterBody2D的移动逻辑,和Godot 3里的KinematicBody2D差异显著:
- 原Godot3的
move_and_slide(velocity, up_vector)方法,在Godot4中改为无参数的move_and_slide() - 移动速度不再通过方法参数传递,而是直接使用节点内置的
velocity属性
修改后的完整代码
extends CharacterBody2D var speed = 150 var jumpforce = 500 var gravity = 700 func _physics_process(delta): # 处理水平移动:用get_axis简化左右输入判断,同时按左右时速度抵消 var input_dir = Input.get_axis("player_left", "player_right") velocity.x = input_dir * speed # 应用重力(仅当未在地面时累加) if not is_on_floor(): velocity.y += gravity * delta # 调用无参数的move_and_slide move_and_slide()
关键改动点
- 移除自定义的
vel变量,直接使用CharacterBody2D内置的velocity属性 - 用
Input.get_axis()替代原有的条件判断,逻辑更简洁且能处理同时按左右的情况 - 重力需要乘以
delta保证移动帧率无关,并且通过is_on_floor()判断只在浮空时应用 move_and_slide()不再需要传入任何参数,内部会自动使用velocity和碰撞检测结果处理移动
内容的提问来源于stack exchange,提问作者kori
相关产品推荐
相关产品推荐

