2016-08-24 3 views
1

私のゲームは1つのシーンなので、この小さなクリックでメニューの設定を再生できます。しかし、問題は、メニューのボタンの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; 
    } 

私は簡単な解決策が存在しなければならない知っているが、私はちょうどカントはそれを見つけます。提案されているようあなたがこれは(そのような簡単にハンドルのための最善の解決策のポーズメニューか何かでUmair M.によるステート・マシンを使用することができます

+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

**そして**彼は、メニューオブジェクトの1つでクリックが発生したときに、そのプレイヤーが移動しないことを望んでいます。だから、OPにそれについてのことを言ってもらいましょう。良い日:) –

+0

@IanH。あなたはなぜ私の答えをdownvoteしたのですか? –

0

に基づいてクリックを扱います例えば)。しかし、もう一つの簡単な解決策は、ブールをfalseに初期化することです。ボットンのプレスでは、キャラクターの動きを許すためにこのブール値を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()メソッドを追加します。ここでは、これに関するビデオを見ることができます:https://www.youtube.com/watch?v=TYzdhiRiKd0

+0

ありがとうございましたが、それでも私はそれが欲しいと思うように動作しません。ゲームでZig Zagのようなメニューを再生するためにそのタッチを達成しようとしているIm :) – Richarrd82

+0

時間可変(timePassed = Time.deltatime)を作成して、押し込みと移動の開始の間の時間を処理することができます。トリガー:https://www.youtube.com/watch?v=3NBYqPAA5Esこれがあなたに役立つことを願って:) – Odle098

関連する問題