Добрый вечер/утро.
Это вопрос, связанный с играми.
Я столкнулся с проблемой, когда у меня есть три объекта (три гоблина), данные которых относятся к одному и тому же классу.
Эти три объекта находятся в массиве, и данные типизированы для этого класса и инициализированы как массив.
private var goblin1:Goblin = new Goblin();
private var goblin2:Goblin = new Goblin();
private var goblin3:Goblin = new Goblin();
Таким образом, указанные выше переменные были затем помещены в массив.
private var aGoblinArray = new Array(container.goblin1, container.goblin2, container.goblin3);
Поместив объекты в массив, я перебрал всех своих гоблинов.
for (var i:int = 0; i < aGoblinArray.length; i++)
{
var goblin:Goblin = aGoblinArray[i];
}
теперь у меня есть hitTest в цикле for, а hitTest:
if (goblin.hitTestPoint(_character.x + 100, _character.y - 45, true))
{
goblinCanMove = false;
trace("lance hits");
//hitOnce
if (!hitOnce)
{
hitOnce = true;
trace("take on damage");
}
goblin.moveBack();
goblin.minusHealth();
}
Это означает, что если этот игрок ударит любого из гоблинов, он выполнит эту функцию.
Как всегда в классе гоблинов.
public static var goblinLife; int;
goblinLife = 2;//put in main constructor
public function minusHealth():void
{
goblinLife --;
checkDeath();
}
private function checkDeath():void
{
if (goblinLife == 0)
{
parent.removeChild(this);
}
}
проблема в том, что если я ударю гоблина1, то жизнь гоблина будет = 1. Это означает, что у всех остальных гоблинов (гоблина 2 и 3) будет 1 жизнь. Так как они принадлежат к одному классу.
если goblin1 умирает, он удаляется, и var goblinLife будет = 0; Теперь я могу сбросить его обратно на 2, но это решит половину проблемы.
Мой вопрос в том, есть ли способ, как я могу убедиться, что у каждого гоблина есть собственная индивидуальная система жизни. Заранее спасибо.
goblinLife
является статическим. Отбросьте статическое ключевое слово. - person Marty   schedule 10.04.2014