Påverka andra objekt*

Om ett komponentscript på ett objekt ska kunna påverka (flytta, ta bort, etc) ett annat objekt så måste det ha en referens till det objektet.

Om båda objekten finns redan från början kan man använda en enkel variabel:

[SerializeField]
GameObject otherObject;

Sedan bestäms vilket objekt variabeln ska peka på genom att man gör kopplingen i Unity-editorn.

(Bild: Inspectorn, otherObject)

Om objektet behöver hittas i realtid finns ett par olika sätt att skapa referensen. Ett är att gå via kollisioner:

void OnCollisionEnter(Collision collision)
{
  GameObject otherObject = collision.gameObject
}

Ett mycket ineffektivt sätt att göra det på är via Find – det bör man bara göra i undantagsfall och absolut inte varje bildruta.

Komponenter

När man väl har en referens till ett annat GameObject kan man dels påverka det direkt, dels komma åt dess komponenter via GetComponent och påverka dem. Det gäller även andra script-komponenter.

void OnCollisionEnter(Collision collision)
{
  HealthScript enemyHealth = collision.gameObject.GetComponent<HealthScript>();
  
  enemyHealth.Injure(6);
}

Last updated