Jump to content
Unity Insider Forum
killstriker64

Mit einer Taste nacheinander 2 Aktionen ausführen

Recommended Posts

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

Share this post


Link to post
Share on other sites

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
    }
}

 

  • Thanks 1

Share this post


Link to post
Share on other sites

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
	}
}

 

  • Thanks 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

 

  • Like 1

Share this post


Link to post
Share on other sites
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
}

 

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...