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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:37:08