对为什么此代码不起作用有任何见解?
当我右键单击时,游戏崩溃并显示错误:“无效的调用。在基数“数组”中不存在的函数“播放”。”
func _ready():
anim_Play = get_tree().get_nodes_in_group("AnimationPlayer")
func_input(event):
if Input.is_action_pressed("aim"):
anim_Play.play("AimSights")
答案 0 :(得分:0)
我从您的代码中猜测,您正在尝试获取对AnimationPlayer
节点的引用,但它失败了,而是获得了一个Array。
发生这种情况是因为您使用的是get_nodes_in_group
(它返回一个组中的节点数组),而不是get_node
,它返回了一个节点。
无效的通话。基本'Array'中不存在的函数'play'
意味着您正在尝试从不存在的Array对象调用play
方法(在AnimationPlayer中找到)。
您会得到AnimationPlayer
var anim_Play = get_node("./path/to/your/AnimationPlayer")
答案 1 :(得分:0)
get_nodes_in_group(group)
返回Array
和SceneTree
组中的group
个节点。
让我们说“ AnimationPlayer”组中有一个AnimationPlayer节点。我们将其获取为:
var anim_player = get_tree().get_nodes_in_group("AnimationPlayer")[0]
请注意[0]
。这称为访问器。我们访问元素0
处的数组。现在,我们可以调用播放:
anim_player.play("AimSights")
请注意:访问数组中不存在的元素是错误的。
这似乎是对群组的不当使用。如果动画播放器与脚本位于同一场景,我建议您使用节点路径,如svarog建议的那样。
此外,它将有助于阅读或搜索一些基本的编程概念:特别是对象和数组。
最后,请阅读Godot文档中的场景和节点页面:https://docs.godotengine.org/en/3.1/getting_started/step_by_step/scenes_and_nodes.html
Godot文档的整个入门指南是学习Godot的宝贵资源。它将极大地帮助您,而且阅读时间不长。
祝你好运!