2016-09-26 10 views
0

Я делаю 2d-платформенную игру. Я использовал элемент пользовательского интерфейса для съемки, и персонаж движется, прикоснувшись к экрану.Unity Touch и UI Element работают вместе

Так, чтобы переместить символ

void Update() 
{ 
    if (Input.touches.Length>0) { 
     Touch firstTouch = Input.GetTouch (0); 
     if (firstTouch.phase == TouchPhase.Began) { 
      if (firstTouch.position.x > ScreenCenterX) { 
       sagHareketBasili();//Move Right 
      } 
      if (firstTouch.position.x < ScreenCenterX) { 
       solHareketBasili();//Move Left 
      } 
     } else 
      sagHareketBasiliDegil();//Stop 
      solHareketBasiliDegil();//Stop 
     } 
    } 
} 

Так что я сделал некоторые исследования в Интернете. И я изменил свой код как

void Update() 
{ 
    if (Input.touches.Length>0) { 
     if (!EventSystem.current.IsPointerOverGameObject()) { 
      Touch firstTouch = Input.GetTouch (0); 
      if (firstTouch.phase == TouchPhase.Began) { 
       if (firstTouch.position.x > ScreenCenterX) { 
        sagHareketBasili(); 
       } 
       if (firstTouch.position.x < ScreenCenterX) { 
        solHareketBasili(); 
       } 
      } else if (firstTouch.phase == TouchPhase.Ended) { 
       sagHareketBasiliDegil(); 
       solHareketBasiliDegil(); 
      } 
     } 
    } 
} 

Кажется, проблема решена. Но нет. Во-первых, пока я касаюсь внешних элементов пользовательского интерфейса, движется символ. если я впервые касаюсь элемента пользовательского интерфейса, перемещаются символы и элементы пользовательского интерфейса (оба должны работать вместе). Если я прикасаюсь к элементу пользовательского интерфейса во второй раз, то успеваю то, что хочу (только элемент UI работает). то есть символ не перемещается, и пользовательский интерфейс работает нормально. Во-вторых, после того, как я касаюсь элемента пользовательского интерфейса, если я хочу, чтобы персонаж перемещался и касался внешнего элемента пользовательского интерфейса, при первом касании ничего не происходит, но второй и более штрих-символ начинает двигаться, как я хочу.

В элементах пользовательского интерфейса я использовал кнопки и триггеры событий.

Любая помощь по этому поводу, пожалуйста ...

ответ

0

Вместо использования Input.Touch, вы можете создать две большие прозрачные кнопки один покрывающие левую половину экрана и другие покрывающие правую половину экрана. И вызовите move left и переместите правый код в событии OnClick каждой кнопки соответственно. Поскольку обе кнопки будут под вашим обычным интерфейсом, они не будут активированы, если вы будете взаимодействовать с другим пользовательским интерфейсом. И установите их прозрачность на 0, чтобы вы могли видеть геймплей за ними.

+0

Большое спасибо за ваш ответ. Я попробую его и поделись результатом. –

+0

Я сделал ваше предложение. Оно работает. спасибо .. –

+0

Пожалуйста, отметьте принятый ответ и повысьте –

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

  • Нет связанных вопросов^_^