2016-08-24 89 views
1

我的遊戲是一個場景,所以我得到這個小點擊播放菜單設置。但問題是,當我點擊菜單中的某個按鈕時,按鈕被按下,但玩家也開始移動。我想要實現的是,如果我點擊菜單按鈕,玩家不會移動,但只要我點擊屏幕上的其他位置,他就會開始移動。玩家在菜單中點擊按鈕時移動

我的播放器腳本設置:

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

我知道必須有一個簡單的解決方案,但我只是不能找到它。

+0

菜單是否統一ugui? – tim

+0

最簡單的方法是有一個透明的按鈕,填滿屏幕。但是你應該檢查下面的實際答案,因爲它們提供了更好的解決方案。 – Cabrra

回答

0

使用狀態機,並根據您當前的

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

據我所知,這不是什麼OP想要的。我認爲他希望球員在按下按鈕時不會移動。 –

+0

** AND **他希望當某個菜單對象發生點擊時,該播放器不會移動。所以讓OP請發表意見吧。美好的一天:) –

+0

@IanH。你能解釋一下你爲什麼低估了我的答案嗎? –

0

您可以使用一個狀態機處理的點擊次數除以Umair M.所建議這是手柄的最佳解決方案動輒暫停菜單或類似的東西(例如)。但另一個簡單的解決方案是創建一個初始化爲false的bool,並且在botton壓縮中將此bool設置爲true以允許角色移動。

一個例子:

在播放器腳本:

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

在Unity編輯從玩家遊戲物體添加到該按鈕的OnButtonClick()方法在的OnClick()組成。在這裏你可以看到一個關於這個的視頻:https://www.youtube.com/watch?v=TYzdhiRiKd0

+0

謝謝你試了一下,但仍然沒有按照我希望的方式工作。我試圖達到這樣的觸摸玩遊戲Zig扎格菜單:) – Richarrd82

+0

你可以創建一個時間變量(timePassed = Time.deltatime)來處理壓力和運動開始之間的時間,另一個工具可以幫助你是觸發器:https://www.youtube.com/watch?v = 3NBYqPAA5E。希望這可以幫助你:) – Odle098