public void zombieAI() {
for (int x = 0; x < MAX_ZOMBIES; x++) {
int randomAngle = (int) (Math.random() * 45); // random angle so
// that zombies do
// not face the same
// way all the time
int XorY = (int) (Math.random() * 2); // zombies should move X or Y
// seperately to encourage
// some random movement
zombie[x].setFaceAngle(player.getFaceAngle()); // zombie
// must
// move
// towards
// player
if (XorY == 0) {
if (zombie[x].getX() < player.getX()) { // zombie's X is to the
// left of player's so
// move right
// set velocity
double velx = zombie[x].calcAngleMoveX(zombie[x]
.getFaceAngle()) * 1;
zombie[x].setVelX(velx);
zombie[x].setX(zombie[x].getX() - zombie[x].getVelX());
}
if (zombie[x].getX() > player.getX()) { // zombie's X is to the
// right of player's so
// move left
// set velocity
double velx = zombie[x].calcAngleMoveX(zombie[x]
.getFaceAngle()) * 1;
zombie[x].setVelX(velx);
zombie[x].setX(zombie[x].getX() + zombie[x].getVelX());
}
} else { //otherwise move Y
if (zombie[x].getY() < player.getY()) {
// set velocity
double vely = zombie[x].calcAngleMoveY(zombie[x]
.getFaceAngle()) * 1;
zombie[x].setVelY(vely);
zombie[x].setY(zombie[x].getY() + zombie[x].getVelY());
}
if (zombie[x].getY() > player.getY()) {
double vely = zombie[x].calcAngleMoveY(zombie[x]
.getFaceAngle()) * 1;
zombie[x].setVelY(vely);
zombie[x].setY(zombie[x].getY() - zombie[x].getVelY());
}
}
}
}
However my problem is that the zombie's do the same decision together, I thought that randomizing X or Y would make the zombies move differently but it seems this is not the case... Any help would be greatly appreciated!
(Here is a screenshot of the problem. Note how all zombies are moving in the same direction towards the player, the zombies that are going out of the screen, re-enter at the opposite end.)
This post has been edited by alpha_x: 07 October 2012 - 01:03 AM

New Topic/Question
Reply



MultiQuote




|