2017-08-16 63 views
0

我目前正在製作一種基於回合的遊戲類型,但是我仍然不知道如何將玩家移動到所選擇的敵人位置。讓一個gameobject移動到另一個被鼠標點擊選中的gameobject?

這是玩家腳本與敵人的位置。

void Update() 
{ 
    if ((Input.GetKeyDown("1")) && (BattleFlow.playerTurn == 1)) // attack monster 1 
    { 
     BattleFlow.currentDamage = 40; 
     GetComponent<Animator>().SetTrigger("PlayerMelee"); 
     GetComponent<Transform>().position = new Vector2(-4.78f, 3.68f); 
     StartCoroutine(playerAttack()); 

    } 
    else if ((Input.GetKeyDown("1")) && (BattleFlow.playerTurn == 1)) // attack monster 2 
    { 
     GetComponent<Animator>().SetTrigger("PlayerMelee"); 
     GetComponent<Transform>().position = new Vector2(-4.45f, 1.77f); 
     StartCoroutine(playerAttack2()); 
    } 
} 

玩家可以移動到怪物1的位置,但怪物2的腳本不起作用。即使我點擊了怪物2,玩家仍然朝着怪物1的方向前進。

這是我放置在敵人腳本上的鼠標點擊代碼。

// Update is called once per frame 
void Update() { 
void OnMouseDown() 
    { 
     Debug.Log(gameObject.name); 
     BattleFlow.selectedEnemy = gameObject.name; 

    } 
+0

else子句正在檢查與if子句完全相同的密鑰。當然,它永遠不會被執行。 – Milster

回答

0

聽起來很有趣。我認爲你需要另一個條件,如果要檢查選擇的怪物名稱。喜歡的東西:

if (Input.GetKeyDown("1") && BattleFlow.playerTurn == 1) 
{ 
    if (BattleFlow.selectedEnemy == "monster1name") // attack monster 1 
    { 
     BattleFlow.currentDamage = 40; 
     GetComponent<Animator>().SetTrigger("PlayerMelee"); 
     GetComponent<Transform>().position = new Vector2(-4.78f, 3.68f); 
     StartCoroutine(playerAttack()); 
    } 
    else if (BattleFlow.selectedEnemy == "monster2name") // attack monster 2 
    { 
     GetComponent<Animator>().SetTrigger("PlayerMelee"); 
     GetComponent<Transform>().position = new Vector2(-4.45f, 1.77f); 
     StartCoroutine(playerAttack2()); 
    } 
} 

額外的事情,我不知道,但它可能會幫助存儲選擇的遊戲對象,而不是僅僅名稱:

BattleFlow.selectedEnemy = gameObject; 

這樣,你不僅可以訪問名稱選定的敵人,但包括位置在內的任何東西。這意味着你可以做這樣的事情來一般地處理攻擊任何敵人,假設你可以將gameobject變換位置轉換到正確的位置,你不需要爲每個敵人分別設置一個單獨的案例。

if (Input.GetKeyDown("1") && BattleFlow.playerTurn == 1) 
{ 
    var enemyPosition = = BattleFlow.selectedEnemy.transform.position; 
    BattleFlow.currentDamage = 40; 
    GetComponent<Animator>().SetTrigger("PlayerMelee"); 
    GetComponent<Transform>().position = enemyPosition; 
    StartCoroutine(playerAttack()); 
} 
+0

我在單個腳本上有兩種類型的敵人。存儲選定的遊戲對象是否仍然有效? –

+0

如果你只有2個,那可能沒關係,我在想是否有20個左右。你應該仍然可以做到,因爲甚至不同的類型都是gameobjects。 –

相關問題