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

Godot中调用move_and_slide()参数过多报错,寻求解决方法

解决move_and_slide调用报错的常见问题

下面是针对你代码中move_and_slide(velocity)报错的几种排查方向和解决方法:

  • 节点类型不兼容
    move_and_slide是运动类节点的专属方法:Godot 3里是KinematicBody2D,Godot 4里是CharacterBody2D。如果你的脚本挂在StaticBody2D或者其他非运动节点上,必然会报错。
    解决:把玩家节点换成对应版本的运动类节点,再挂载脚本。

  • 参数或变量异常
    检查两个关键点:

    1. move_speed必须是数字类型,不能是字符串或未赋值的变量;
    2. target_position得是有效的Vector2值,要是没给它赋值(比如没关联目标节点的位置),计算出的direction会是无效值,导致velocity异常。
  • Godot版本用法差异
    Godot 4对move_and_slide的调用方式做了修改:

    • Godot 3:直接传velocity参数,也就是你现在写的move_and_slide(velocity)
    • Godot 4:需要先给节点的velocity属性赋值,再调用无参的move_and_slide()
      如果你用的是Godot 4,代码要改成这样:
    func moveTowardsTarget():
        if position.distance_to(target_position) > 1:
            var direction = (target_position - position).normalized()
            velocity = direction * move_speed
            move_and_slide()
    

内容的提问来源于stack exchange,提问作者Annie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:12:47