2016-08-24 5 views
1
klickt.

Mein Spiel ist eine Szene, also habe ich diesen kleinen Klick, um das Menü Setup zu spielen. Aber das Problem ist, wenn ich auf einen der Knöpfe im Menü klicke, wird der Knopf gedrückt, aber der Spieler beginnt auch, sich zu bewegen. Was ich versuche zu erreichen, ist, wenn ich auf die Menüschaltflächen klicke, wird der Spieler sich nicht bewegen, aber sobald ich irgendwo anders auf den Bildschirm klicke, wird er sich bewegen.Spieler bewegt sich, wenn er im Menü auf

Mein Player Controller Skript-Setup:

if (Input.GetMouseButtonDown(0)) 
    { 
     inGameMenu.SetActive(true); 
     startMenu.SetActive(false); 

     if(grounded) 
     { 
      myRigidBody.velocity = new Vector2(angleOfJump, jumpForce); 
     } 
    } 

    if(Input.GetMouseButton(0)) 
    { 
     if(jumpTimeCounter > 0) 
     { 
      myRigidBody.velocity = new Vector2(angleOfJump, jumpForce); 
      jumpTimeCounter -= Time.deltaTime; 
     } 
    } 

    if(Input.GetMouseButtonUp(0)) 
    { 
     jumpTimeCounter = 0; 
    } 

Ich weiß, dass es eine einfache Lösung sein muss, aber ich kann es nur finden.

+0

ist die Menüeinheit Ugui? – tim

+0

Der einfachste Weg ist eine transparente Schaltfläche, die den Bildschirm ausfüllt. Sie sollten jedoch die tatsächlichen Antworten unten überprüfen, da sie bessere Lösungen bieten. – Cabrra

Antwort

0

Verwenden Zustandsmaschine, und klickt Griff basierend auf Ihrer aktuelle

enum GameStates 
{ 
    Started, 
    Playing, 
    Ended 
}; 

GameStates currentState = GameStates.Started; 


void Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     if(currentState == GameStates.Started) 
     { 
      inGameMenu.SetActive(true); 
      startMenu.SetActive(false); 
      currentState = GameStates.Playing; 
     } 
     else if(currentState == GameStates.Playing) 
     { 
      // handle gameplay click here. 
     } 
     // ... etc 
    } 
} 
+0

Soweit ich verstehe, ist das nicht ganz was OP will. Ich denke, er möchte, dass sich der Player nur dann nicht bewegt, wenn die Tasten nicht gedrückt werden. –

+0

** AND ** Er möchte, dass sich der Player nicht bewegt, wenn ein Klick auf eines der Menüobjekte erfolgt. Lassen Sie das OP also bitte mitsprechen. Guten Tag :) –

+0

@IanH. Können Sie mir bitte erklären, warum Sie meine Antwort abgelehnt haben? –

0

Sie können eine Zustandsmaschine verwendet werden, wie durch Umair M. vorgeschlagen Dies ist die beste Lösung für Griff leicht ein Pause-Menü oder so ähnlich (beispielsweise). Aber eine andere einfache Lösung ist, einen Bool zu false inizialisiert zu machen, und im Botton Pression diesen bool auf true setzen, um die Charakterbewegung zu erlauben.

Ein Beispiel:

Im Spieler-Skript:

bool CharacterActive = false; 

void Update() 
{ 
    if(CharacterActive) // if the bool variable is active.. 
    { 
     if(Input.MouseStuff :D) // if movement key pressed.. 
     { 
      // ..Move the character 
     } 
    } 
} 

public void OnButtonClick() 
{ 
    CharacterActive = true; 
} 

In Unity-Editor auf die Schaltfläche fügen Sie die OnButtonClick() -Methode von dem Spieler in Gameobject OnClick() Komponente. Hier können Sie ein Video darüber sehen: https://www.youtube.com/watch?v=TYzdhiRiKd0

+0

Danke versucht es aber immer noch nicht so wie ich es gerne würde. Ich versuche, diese Note zu erreichen, um Menü wie im Spiel Zig Zag zu spielen :) – Richarrd82

+0

Sie können eine Zeitvariable (timePassed = Time.deltatime) erstellen, um die Zeit zwischen dem Druck und dem Beginn der Bewegung zu behandeln, ein anderes Werkzeug, das Ihnen helfen kann sind der Auslöser: https://www.youtube.com/watch?v=3NBYqPAA5Es. Hoffe, dass dir das weiterhilft :) – Odle098

Verwandte Themen