Godot,GDScript-右键单击播放动画

时间:2019-10-21 04:50:15

标签: godot gdscript

对为什么此代码不起作用有任何见解?

当我右键单击时,游戏崩溃并显示错误:“无效的调用。在基数“数组”中不存在的函数“播放”。”

   func _ready():
       anim_Play = get_tree().get_nodes_in_group("AnimationPlayer")
   func_input(event):
      if Input.is_action_pressed("aim"):
        anim_Play.play("AimSights")

2 个答案:

答案 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)返回ArraySceneTree组中的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的宝贵资源。它将极大地帮助您,而且阅读时间不长。

祝你好运!