Wie kann ich in C# / Unity die Position eines Gameobjekts auslesen?

4 Antworten

Gibt verschiedene Methoden. Generell beziehst du immer noch das GameObject. Entweder, wie regex9 sagt, indem du es direkt zuweist oder z.B. auch über

GameObject.Find("Name");

LG


AlexNeu2007 
Beitragsersteller
 11.09.2021, 10:16

Wie kann ich dann die Position abrufen?

Dultus  11.09.2021, 10:52
@AlexNeu2007

Über GameObject.Transform, da stehen dann die Koordinaten drinne.

LG

Du hast zunächst diese Möglichkeiten

1. Objekt Anhängen bzw Initialisieren

schreib in dein Script über der Start Methode folgenden Codeblock

public Transform name;

(bei "name" kannst du selbstverständlich deine eigenen Variablenamen wählen)

Wenn du das Script jetzt speicherst wird dir in deinem Inspector bei dem Script ein neues leeres Feld angezeigt. Dort ziehst du dann das Objekt in Frage rein.

Tada. Nun kannst du die Position mit

name.position;

abfragen.

2. Objekt mit Tag versehen.

Diese Methode ist gut wenn du mehrere Objekte finden willst.

Erstmal musst du deinem Objekt ein Tag zuweisen. Das kannst du auch Oben im Inspector machen. Wenn dein(e) Objekt(e) seinen Tag hast, kannst du so ihre Position abfragen

2.1 Nur ein Objekt

Vector3 objectPos = GameObject.FindObjectWithTag("DeinTag").transform.position;

2.2 Mehrere Objekte

GameObject[] objects = GameObject.FindObjectsWithTag("DeinTag");

List<Vector3> objectsPos = new List<Vector3>();

foreach(GameObject object in objects)
{
objectsPos.Add(object.transform.position);
}

(Das mit den meheren Objekten geht auch einfacher guck dir gerne mal LINQ an)

3. Ganz Simpel du suchst das Objekt einfach mit seinem Namen.

Vector3 objPos = GameObject.Find("NameDesObjektes).transform.position;

Jedoch sind Methode 2 und 3 nicht sehr Perfomant. Du solltest also darauf achten, dass sie nicht in jeder Update Methode stehen am besten in der Start Methode oder noch besser in der Awake Methode.

Falls Fragen offen sind sag gerne bescheid

LG

Dnold

Woher ich das weiß:Studium / Ausbildung

Trotzdem noch immer über das Game Object. Dein Skript braucht aber eine Referenz darauf.

Du könntest dir ein Feld anlegen, auf welches du dein Game Object im Inspektor ziehst.

public GameObject yourGameObject;

Lies dazu auch hier.


AlexNeu2007 
Beitragsersteller
 11.09.2021, 10:17

Wie kann ich dann die Position abrufen?

In dem Script:


public Transform positionVomAnderen;


//beispiel zum auslesen:

public float positionXVomAnderen;

void Update() 
  {
    positionXVomAnderen = positionVomAnderen.position.x;
  }

Jetzt musst du nur noch in Unity bei dem Script bei "Transform" das GameObject mit Drag-and-Drop reihziehen. Mein Video dazu:

https://www.youtube.com/watch?v=KosbljVRb88

Viele Grüße!

Woher ich das weiß:eigene Erfahrung