2017-08-16 10 views
0

現在、ターンベースのタイプのゲームを行っていますが、選択した敵の位置にプレーヤーを移動させる方法がわかりません。マウスボタンで選択した別のゲームオブジェクトにゲームオブジェクトを移動させますか?

これは、敵の位置を持つプレイヤースクリプトです。

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

いいですね。私はあなたが選択されたモンスターの名前を確認する場合、別の条件が必要かと思う。何かのように:あなたがいない名前だけにアクセスできるようにする方法を

BattleFlow.selectedEnemy = gameObject; 

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()); 
    } 
} 

追加の事、私は知りませんが、それは名前だけでなく、選択ゲームオブジェクトを格納するのに役立つかもしれません選択された敵のうち、その位置を含む何か。これは、ゲームオブジェクトのトランスフォームの位置を正しい位置に変換できると仮定して、このような何かを行い、敵を攻撃することを一般的に扱うことができることを意味します。

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

私は1つのスクリプトに2種類の敵を持っています。選択したゲームオブジェクトを保存しても機能しますか? –

+0

2人しかいない場合はおそらく問題ありませんが、20人ほどあれば考えていました。あなたはまだそれを行うことができるはずですが、異なる種類のものもゲームオブジェクトです。 –

関連する問題