2013-12-11 5 views
0

Я уже заставляю персонаж персонажа перемещаться к нему - это назначение (оживить персонажа, чтобы перейти к этому месту назначения), я хотел отключить кнопку GUI, когда персонаж игрока движется, но я могу «Получи это и работай. Не могли бы вы, ребята, помочь мне?Отключить графический интерфейс при перемещении символа

Вот код:

public class UserPlayer : Player 
{ 
    public override void TurnUpdate() 
    { 
     //Moving animation 
     if (positionQueue.Count > 0) 
     { 
      GUI.enabled = false; // This is the one that i want when the character still moving (animation still moving), disabled the GUI. But i can't get it 
      transform.position += (positionQueue[0] - transform.position).normalized * moveSpeed * Time.deltaTime; 

      if (Vector3.Distance(positionQueue[0], transform.position) <= 0.1f) 
      { 
      transform.position = positionQueue[0]; 
      positionQueue.RemoveAt(0); 

      if (positionQueue.Count == 0) 
      { 
       actionPoints--; 
      } 
     } 
     } 

     base.TurnUpdate(); 
    } 

    public override void TurnOnGUI() 
    { 
     base.TurnOnGUI(); 
    } 
} 

public class Player : MonoBehaviour 
{ 
    //for movement animation 
    public List<Vector3> positionQueue = new List<Vector3>(); 

    public virtual void TurnUpdate() 
    { 
     if (actionPoints <= 0) 
     { 
      actionPoints = 2; 
      magicAttacking = false; 
      moving = false; 
      attacking = false;  
      GameManager.instance.NextTurn(); 
     } 
    } 

    public virtual void TurnOnGUI() 
     { 
     if (GameManager.instance.currentPlayerIndex == 0 || GameManager.instance.currentPlayerIndex == 2) 
     { 
      //ToolTip Text 
      move = GUI.Button(buttonRect, new GUIContent("Move", "Move the Player")); 
      GUI.Label(tooltipRect, GUI.tooltip, label1); 

      GUI.tooltip = null; 

      //Move Button 
      if (move) 
      { 
       if (!moving) 
       { 
        GameManager.instance.RemoveTileHighlights(); 
        moving = true; 
        attacking = false; 
        GameManager.instance.HighlightTilesAt(gridPosition, Color.blue, movementPerActionPoint); 
       } 

       else 
       { 
        moving = false; 
        attacking = false; 
        GameManager.instance.RemoveTileHighlights(); 
       } 
      } 
     } 
+0

Что вы имеете в виду отключить? Из того, что я вижу, пока персонаж движется, параметр 'moving' должен препятствовать тому, чтобы кнопка ничего не делала. Вы имеете в виду, что вы хотите, чтобы кнопка была не поддающейся давлению и седой, вроде как формы окон? –

ответ

0

Ваш вопрос уже сделано, посмотрите here.

Адаптировать ваш код таким образом:

public virtual void TurnOnGUI() { 
    if (GameManager.instance.currentPlayerIndex == 0 || GameManager.instance.currentPlayerIndex == 2) { 
    ... 
    if(!moving) { 
    move = GUI.Button(buttonRect, new GUIContent("Move", "Move the Player")); 
    GUI.Label(tooltipRect, GUI.tooltip, label1); 
    }  
    ... 
    } 
} 
Смежные вопросы