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

4 Antworten

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 
Fragesteller
 11.09.2021, 10:17

Wie kann ich dann die Position abrufen?

0

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

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

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

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

Xeno24680  15.03.2024, 23:46

lebensretter

0