Godot 3D FPS教程move_and_slide()代码报错求助
解决Godot 4中move_and_slide()参数过多的报错问题
这是Godot版本差异导致的:你用的是Godot 4.x,但教程基于Godot 3.x编写,两个版本的move_and_slide()API完全重构了。
核心修改逻辑
Godot 4.x中move_and_slide()不再需要传入任何参数,原来的参数全部改为通过角色节点的属性来配置。具体替换步骤如下:
- 替换调用代码
把原来的带参调用直接改成无参数版本:
vel = move_and_slide()
注意:Godot 4中
move_and_slide()会自动使用节点的velocity属性,如果你之前用自定义变量vel存储速度,需要先把vel赋值给velocity,或者直接全程使用velocity变量。
- 配置原参数对应的属性
在调用move_and_slide()之前,添加以下代码来替代原来的参数:
# 对应原参数中的0.05(滑动阈值) slide_on_slope_min_velocity = 0.05 # 对应原参数中的4(最大滑动次数) max_slides = 4 # 对应原参数中的deg_to_rad(MAX_SLOPE_ANGLE)(最大坡度角) max_slope_angle = deg_to_rad(MAX_SLOPE_ANGLE)
原参数中的Vector3(0,1,0)是默认地面法向量,Godot 4.x默认就是Y轴向上,无需额外配置。
完整示例(_physics_process函数内)
func _physics_process(delta): # 这里保留你的速度计算逻辑(比如移动、重力施加等) # 示例:假设你之前用vel变量处理速度 vel.y += GRAVITY * delta # ...其他速度修改逻辑... # 将自定义vel赋值给节点默认的velocity属性 velocity = vel # 配置滑动相关属性 slide_on_slope_min_velocity = 0.05 max_slides = 4 max_slope_angle = deg_to_rad(MAX_SLOPE_ANGLE) # 调用无参数的move_and_slide,返回更新后的速度 vel = move_and_slide()
内容的提问来源于stack exchange,提问作者Spiderdude978
相关产品推荐
相关产品推荐

