Unity Objekt bewegen?
Hallo,
Ich möchte in Unity ein spiel selber bauen und lerne deshalb c#. Aber jetzt weiß ich nicht weiter. ich möchte ein sich bewegendes Objekt haben das immer wenn es einen bestimmten punkt erreicht und eine Taste gedrückt wird etwas tut. verstehe aber nicht wie man das nun macht.
-Ananasdublone
2 Antworten
Zerteile dein Problem in kleinere Probleme:
- Wie prüfe ich, ob ein Objekt einen bestimmten Punkt erreicht hat?
- Wie prüfe ich, ob eine Taste gedrückt wird?
- Wie kombiniere ich beides?
Antworten darauf wären beispielsweise:
- Die Position deines Objektes erhälst du über die Komponente Transform. Jedes GameObject besitzt diese Komponente. Ein Punkt ist in den meisten Fällen ein dreidimensionaler Vektor, ein Vector3. Um nun zu prüfen, ob ein Objekt einne Punkt erreicht hat, bietet es sich an, die Distanz zwischen der Objektposition und dem Punkt gegen einen Wert zu prüfen, mithilfe von Vector3.Distance. Achtung, dein Objekt wird aus natürlicher Bewegung heraus nie genau den Punkt erreichen, deswegen ist eine annäherende Distanz erforderlich.
- Einen Tastendruck bekommst du über den Input. Da bietet sich beispielsweise Input.GetKeyDown in Update() an.
- Beides kombinieren kannst du über ein bedingtes Statement, mit dem Schlüsselwort if. In Worten, wenn die bestimmte Taste gedrückt wird und die Distanz zu dem Punkt kleiner ist als ein konstanter Grenzwert, dann mach was.
Bei allen Links sind Beispiele dabei, die dir das Verständnis erleichtern.
Als erstes Movement zwischen 2 Punkten wird oft mit MoveTowards umgesetzt.
https://docs.unity3d.com/ScriptReference/Vector3.MoveTowards.html
Dann muss die Distance gemessen werden und dann kann man ein Input machen, wenn der Abstand klein genug ist.
https://docs.unity3d.com/ScriptReference/Vector3.Distance.html