2016-07-04 14 views
1

Ich habe eine Menüszene, in der der Player springen kann. Nur zum Spaß bevor das eigentliche Spiel beginnt. Das Spiel beginnt mit einem Klick auf einen UI-Button. Aber wenn ich auf den Button klicke, springt der Player kurz bevor die neue Szene geladen wird. Ich möchte das verhindern. Also muss ich vor meinem Jump überprüfen, ob kein Button angeklickt wurde. Irgendwelche Ideen wie man das macht?Unity Prevent Jump, wenn auf die Schaltfläche geklickt wurde

Ich versuchte es mit einer statischen Variable. Das Problem ist jedoch, dass das Skript, das die Jump-Funktion aufruft, zuerst ausgeführt wird. Vor dem Buttonscript kann ich die Variable auf false setzen.

void Update() 
{ 
    isGrounded = Physics2D.OverlapCircle(GroundCheck1.position, 0.15f, groundLayer); 

    // Here I want to check if the click doesnt hit a button 
    if (Input.GetMouseButtonDown(0) && isGrounded) 
    { 
     GetComponent<AudioSource>().Play(); 

     // Here I set Jump to true, so my FixedUpdate Method can execute the Jump 
     jump = true; 
    } 
} 

Antwort

1

Sehr einfach.

Überprüfen Sie, ob die Maus über ein GUI-Element:

EventSystem.current.IsPointerOverGameObject()

So

if (Input.GetMouseButtonDown(0) 
&& isGrounded 
&& !EventSystem.current.IsPointerOverGameObject()) 

Dies überprüft, um sicherzustellen, dass, wenn sie mit der Maus angeklickt und sie nicht über ein GUI-Element waren , dann kann der Spieler springen.

Als Nebenbei, wenn Sie große Bedingungen wie diese bekommen, ist es eine gute Idee, sie in Hilfsmethoden zu brechen.

+0

Vielen Dank !! So einfach -.- Aber ich habe gerade begonnen, mich in Unity zu entwickeln. Du hast viel geholfen. Ich werde dies als beantwortet markieren, sobald ich kann. (7 Minuten Verzögerung) – DannielR

Verwandte Themen