问题描述
这是我为world节点编写的一些代码,用于更新有关收集的能力和剩余生命数量的标签。游戏的工作方式是,当您与敌人碰撞并且敌人死亡时,它们会赋予您能力。我的想法是,使用信号只能让我“联系”每个功能一个节点(据我所知)。那么如何让_on_green_enemy_AbilityCollected
函数与游戏中产生/存在的每个敌人相关?
extends Node2D
var lives = 3
var ability = ""
onready var livesCounter = get_node("CanvasLayer/Lives")
onready var currentAbility = get_node("CanvasLayer/CurrentAbility")
func _on_player_minuslife():
lives -= 1
func _on_green_enemy_AbilityCollected(node):
ability = get_node(node).get("ability")
func _process(delta):
var livestext = "LIVES LEFT: " + String(lives)
livesCounter.text = livestext
var Abilitytext = "CURRENT ABILITY: " + ability
currentAbility.text = Abilitytext
解决方法
好吧,所以我避免了此问题,而不是将代码放在敌人身上,而是使用move_and_collide返回的内容从与玩家发生冲突的节点获取能力变量的名称。