killstriker64 Geschrieben 5. Mai 2019 Melden Share Geschrieben 5. Mai 2019 Guten Tag liebe Community, ich arbeite gerade an einem Soccer-Spiel in 2D, wo ein Ball den Hütchen ausweichen und man Coins einsammeln muss. Ich habe es hinbekommen, dass man mit a nach links und mit d nach rechts dribbeln kann. Mein Ziel ist es beide Aktionen auf die Leertaste zu verlegen und zwar so, dass beim ersten drücken nach links und beim zweiten drücken nach rechts usw. gedribbelt wird. Habt ihr möglicherweise eine Ahnung, wie man dies hinkriegt? Über eine Hilfe würde ich mich sehr freuen :) Viele Grüße killstriker64 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
project365 Geschrieben 5. Mai 2019 Melden Share Geschrieben 5. Mai 2019 Hi, also am einfachsten würde es sein, dass du in der Update Funktion eine Input Abfrage machst mit GetKeyDown und dann in der Abfrage zwei Funktionen hintereinander aufrufst. Wenn das zweite Dribbeln verzögert nach dem ersten Dribbeln auftauchen soll (weil ja erstmal nach Links gedribbelt wird), dann eventuell die zweite Funktion mit einem Invoke aufrufen. using System.Collections; using System.Collections.Generic; using UnityEngine; public class dribbeln : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if(Input.GetKeyDown(KeyCode.Space)) //Einmalige Tastaturabfrage für die Taste Space (Leertaste) { Dribbeln1(); //Erstmal wird die Funktion Dribbeln1 direkt aufgerufen Invoke("Dribbeln2", 2f); //Erst mit zwei Sekunden verzögerung, nachdem der Ball nach Links gedribbelt ist, wird die zweite Funktion aufgerufen und der Ball dribbelt nach Rechts } } void Dribbeln1() { //Funktion zum Dribbeln nach Links } void Dribbeln2() { //Funktion zum Dribbeln nach Rechts } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 5. Mai 2019 Melden Share Geschrieben 5. Mai 2019 Hi, ich glaube er meinte das etwas anders. Wenn ich dich richtig verstanden habe, willst du, dass sich der Ball die ganze Zeit bewegt und jedes mal, wenn die Leertaste gedrückt wird, sich die Richtung ändert. Das kannst du so umsetzen, dass du immer die aktuelle Richtung speicherst und beim Tastendruck den Wert umkehrst. Also etwa so: int direction = 1; void Update(){ if(Input.GetKeyDown(KeyCode.Space)){ direction *= -1; } if(direction > 0){ //move right } else{ //move left } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
killstriker64 Geschrieben 5. Mai 2019 Autor Melden Share Geschrieben 5. Mai 2019 Hallo, ich habe eine Lösung gefunden. Dieses Problem habe ich mit einer Bool Abfrage gelöst: bool direction = true; if (Input.GetKeyDown(KeyCode.Space)) { if (direction == true) { //direction left direction = false; } else { //direction right direction = true; } } Ich möchte mich für die große Hilfe und für die schnellen Antworten bedanken Schönen restlichen Sonntag noch. Viele Grüße killstriker64 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 5. Mai 2019 Melden Share Geschrieben 5. Mai 2019 Nur so zur Info. Unity hat ein neues Imput System, mit dem kann man auch Kombos machen und ev. solche dinge leicht lösen. Habs aber selber noch nicht ausprobiert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
devandart Geschrieben 6. Mai 2019 Melden Share Geschrieben 6. Mai 2019 vor 12 Stunden schrieb killstriker64: bool direction = true; if (Input.GetKeyDown(KeyCode.Space)) { if (direction == true) { //direction left direction = false; } else { //direction right direction = true; } } Ist jetzt nicht nötig, aber vielleicht trotzdem interessant. Das kannst Du auch (gut leserlich) kürzen: bool direction = true; if (Input.GetKeyDown(KeyCode.Space)) { direction = !direction; //direction wird einfach negiert } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.