Godot中调用move_and_slide()参数过多报错,寻求解决方法
解决move_and_slide调用报错的常见问题
下面是针对你代码中move_and_slide(velocity)报错的几种排查方向和解决方法:
节点类型不兼容
move_and_slide是运动类节点的专属方法:Godot 3里是KinematicBody2D,Godot 4里是CharacterBody2D。如果你的脚本挂在StaticBody2D或者其他非运动节点上,必然会报错。
解决:把玩家节点换成对应版本的运动类节点,再挂载脚本。参数或变量异常
检查两个关键点:move_speed必须是数字类型,不能是字符串或未赋值的变量;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()- Godot 3:直接传
内容的提问来源于stack exchange,提问作者Annie
相关产品推荐
相关产品推荐

