Unity2D: Wie kann ich "Für das nicht statische Feld, die Methode oder die Eigenschaft "Component.gameObject" ist ein Objektverweis erforderlich" korrigieren?

1 Antwort

Die TakeDamage-Methode ist eine objektgebundene Methode, daher brauchst du auch ein Objekt der Klasse Enemy, um sie aufrufen zu können.

In deiner Schleife läufst du bereits über alle Collider. Von diesen musst du dir das jeweils angehängte Game Object holen und von diesem dann die Script-Komponente (Enemy).


Gitegas 
Beitragsersteller
 10.07.2023, 22:17

Ich verstehe, könntest du mir netterweise noch sagen, wie das in meinem Code aussähe? So, wie ich es verstehe, könnte ich durch Instantiate() wohl auch einfach eine Instanz der Enemy Klasse als Objekt nehmen, aber in dieser verallgemeinerten Form in Verbindung mit jeglichem GameObject vom Collider habe ich gerade etwas herumprobiert und bekomme es nicht ganz hin.

0
regex9  11.07.2023, 00:35
@Gitegas

Neue Objekte müssen nicht erstellt werden, denn sie existieren ja schon.

var enemyObject = enemy.GetComponent<Enemy>();
enemyObject.TakeDamage(30f);
0
Gitegas 
Beitragsersteller
 11.07.2023, 17:41
@regex9

Hat funktioniert, super, vielen Dank

1