🎮
Unity snabbreferens
  • Unity snabbreferens
  • Installation & setup
  • Kompilera och distribuera
  • Unity och git
  • Grundläggande koncept
    • Begrepp
    • Ett Unityprojekts uppbyggnad
    • Prefabs och instanser
    • Komponenter
    • Scener
    • MonoBehavior
    • Lager och taggar
    • Knappar och axlar
  • Grundfunktioner
    • Debug och gizmos
    • Datatyper och synlighet
    • Input
      • Action-based Input System
    • Flytta och rotera
    • Kollisioner
    • Skapa och förstör
    • Hitta spelobjekt
    • Beständig data
    • Slump
    • Fysik (2D och 3D)
      • Raycasting*
    • UI och Canvas*
    • Importera grafik*
      • Sprite editor*
    • Unity Events
    • Invoke, Couroutines
    • Animationer*
      • AnimationClip*
      • Animator Controller*
  • Andra funktioner
    • Tilemaps*
    • Asset Store
      • Användbara Assets
    • Package manager
    • Meddelanden
    • CharacterController
    • Scriptable objects*
  • Tilläggspaket
    • AI-Navmesh*
    • Mirror (nätverk)
    • XR Toolkit
      • Controllers
      • Interaktion*
      • Device Simulator
      • Teleportation
      • Meta Quest 2/3
      • 3D-modeller*
    • MRTK3 (HoloLens 2)
      • Grundkoncept*
      • Simulering
      • Interaktion*
      • Röststyrning
      • UI/UX och Canvas*
      • Spatial awareness*
      • Deployment*
    • MRTK2 (Hololens 1)
    • ProBuilder
  • Tekniker
    • Påverka andra objekt*
    • Rutnät*
Powered by GitBook
On this page

Was this helpful?

  1. Tekniker

Påverka andra objekt*

PreviousProBuilderNextRutnät*

Last updated 1 year ago

Was this helpful?

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 – 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 och påverka dem. Det gäller även andra script-komponenter.

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

Find
GetComponent