You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()不再需要传入任何参数,原来的参数全部改为通过角色节点的属性来配置。具体替换步骤如下:

  1. 替换调用代码
    把原来的带参调用直接改成无参数版本:
vel = move_and_slide()

注意:Godot 4中move_and_slide()会自动使用节点的velocity属性,如果你之前用自定义变量vel存储速度,需要先把vel赋值给velocity,或者直接全程使用velocity变量。

  1. 配置原参数对应的属性
    在调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:22:52