2017-08-16 60 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。 –

相关问题