我无法在一个函数中区分数组中的对象。 我创建了一个可容纳8个敌人的阵列
enemy:Enemy;
enemyArray:Array = [];
for (i = 0; i < 8; i++)
{
enemy = new Enemy();
enemyArray.push(enemy);
}
现在每个敌人都不同,因为我为它们分配了不同的字符串。例如,
enemyElemeny:String;
enemyArray[0].enemyElement = "Water";
enemyArray[1].enemyElement = "Fire";
etc....
这是问题所在。玩家根据敌人的元素造成更多伤害,然而,它对所有敌人造成相同的伤害,可能是因为我在if语句中有敌人阵营[j]。
var j:int;
for (j = 0; j < enemyArray.length; j++)
{
if (enemyArray[j] != null)
{
trace(enemyArray[0].enemyElement, enemyArray[1].enemyElement)
if (player.playerElement == "Electric")
{
if (enemyArray[j].enemyElement == "Water")
{
//DO A LOT OF DAMAGE
damage = 20
}
else if (enemyArray[j].enemyElement == "Fire")
{
//DONT DO A LOT OF DAMAGE
damage = 10
}
}
}
}
所以,如果屏幕上有两个敌人,一个水和一个火,它会对两者造成同样的伤害。
答案 0 :(得分:1)
你改变了唯一一个名为damage
的变量,然后你依次为每个敌人分配这个伤害,这就是你对所有敌人造成同样伤害的原因。相反,你应该在你的那个循环中一次对一个敌人施加伤害。
var j:int;
for (j = 0; j < enemyArray.length; j++)
{
if (enemyArray[j] != null)
{
trace(enemyArray[0].enemyElement, enemyArray[1].enemyElement)
if (player.playerElement == "Electric")
{
if (enemyArray[j].enemyElement == "Water")
{
//DO A LOT OF DAMAGE
damage = 20
}
else if (enemyArray[j].enemyElement == "Fire")
{
//DONT DO A LOT OF DAMAGE
damage = 10
}
}
// put all the other elements of player&enemy in here
enemyArray[j].takeDamage(damage);
// and then apply the calculated damage to only j'th enemy, not to every enemy
}
}