2016-08-24 2 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. Я думаю, он хочет, чтобы игрок не двигался, когда нажата кнопка arent. –

+0

** И ** он хочет, чтобы игрок не двигался, когда клик происходит на одном из объектов меню. Поэтому пусть ОП скажет об этом, пожалуйста. Хороший день :) –

+0

@IanH. не могли бы вы объяснить, почему вы отказали мне в ответе? –

0

Вы можете использовать государственную машину, как было предложено Umair М. Это лучшее решение для ручки легко меню паузы или что-то подобное (например). Но другое простое решение - создать bool inizialized to false, и при нажатии на 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() от игрока GameObject в OnClick() компонента. Здесь вы можете посмотреть видео об этом: https://www.youtube.com/watch?v=TYzdhiRiKd0

+0

Спасибо, пробовал, но все равно не работает так, как хотелось бы. Im пытается достичь этого прикосновения, чтобы играть в меню, как в игре Zig Zag :) – Richarrd82

+0

Вы можете создать временную переменную (timePassed = Time.deltatime), чтобы обрабатывать время между нажатием и началом движения, другие инструменты, которые могут вам помочь являются триггером: https://www.youtube.com/watch?v=3NBYqPAA5Es. Надеюсь, что это может вам помочь :) – Odle098

Смежные вопросы