Wie kann ich mein Objekt so bewegen?
Hallo alle zusammen! Ich bin relativ neu in Unity und was C# Scripts anbelangt. Ich habe mich trotzdem schonmal an ein Projekt geworfen und habe eine Frage zu meinem Objekt was das Movement angeht. Ich möchte das sich das Objekt nur zu 3 nebeneinander festgelegten Positionen teleportieren kann. Also wenn ich jetzt "A" drücke soll er auf die linke festgelegte Position geportet werden und wenn ich dann auf "D" drücke soll er zu der nächst gelegenen Position gehen die ich vorher bestimmt habe, wenn er am Ende einer festgelegten Position ist und ich dann nochmal "A" drücke, soll er nicht weiter nach links gehen. Wie mach ich das? Es klingt so leicht und doch so schwer! Ich hoffe echt auf Hilfe, und bedanke mich schon im Voraus! LG
1 Antwort
Ohne mich groß mit Unity auszukennen: Kannst du nicht ein Array positionen[] mit drei Positionsvektoren anlegen und dann sowas bauen wie:
static int aktuellePosition = 0;
if(//'A' wird gedrückt && aktuellePosition > 0)
{
aktuellePosition--;
// Player auf positionen[aktuellePosition] verschieben
}
else if(//'D' wird gedrückt && aktuellePosition < 3)
{
aktuellePosition++;
// Player auf positionen[aktuellePosition] verschieben
}
Ist natürlich nur Pseudo-Code, weil ich die Befehle nicht kenne ;)
statt die aktuelle Position static zu machen, würde ich sie vermutlich ins Player-Objekt packen.
Vom Prinzip her ist es so machbar, aber die Linke auf welcher Achse?
Wenn es so gemeint war, würde das in 3D etwa so aussehen.
float[] AchsenPosition = new float[3] { -1.5f, 0, 1.5f };
byte Aktuell = 0;
// Ab hier weiter in void Update() { ... }
if (Input.GetKey(KeyCode.A) && Aktuell > 0) Aktuell--;
else if (Input.GetKey(KeyCode.D) && Aktuell < 2) Aktuell++;
transform.Translate
(transform.position.x,transform.position.y,AchsenPosition[Aktuell] );/*
transform.Translate (new Vector3
(transform.position.x,transform.position.y,AchsenPosition[Aktuell]));*/
PS: Zählen will gelernt sein. Im else if sollte es natürlich lauten: