I’m working on a naval combat game where the player controls a warship and needs to fight against computer-controlled vessels. The enemy ships need basic AI behavior to follow the player’s position and engage in combat.
My problem is figuring out how to make enemy vessels chase the player ship effectively. I’ve tried several approaches for movement logic but none seem to work properly.
Here’s my current attempt at enemy movement code (player_ship is the player object, enemy_vessel is the AI ship):
var movementTimer:Timer = new Timer(15);
movementTimer.addEventListener("timer", updateEnemyPosition);
function updateEnemyPosition(e:TimerEvent):void{
movementTimer.start();
if(((enemy_vessel.x + 25.5) < player_ship.x) && (enemy_vessel.x < player_ship.x) && ((enemy_vessel.y + 180.2) < player_ship.y) && (enemy_vessel.y < player_ship.y)){
enemy_vessel.x += 1.5;
enemy_vessel.y += 1.5;
}
else if(((enemy_vessel.x + 25.5) < player_ship.x) && (enemy_vessel.x < player_ship.x) && (enemy_vessel.y > (player_ship.y + 180.2)) && ((enemy_vessel + 180.2) > (player_ship.y + 180.2))){
enemy_vessel.x += 1.5;
enemy_vessel.y -= 1.5;
}
else if((enemy_vessel.x > (player_ship.x + 25.5)) && ((enemy_vessel.x + 25.5) > (player_ship.x + 25.5)) && ((enemy_vessel.y + 180.2) < player_ship.y) && (enemy_vessel.y < player_ship.y)){
enemy_vessel.x -= 1.5;
enemy_vessel.y += 1.5;
}
else if((enemy_vessel.x > (player_ship.x + 25.5)) && ((enemy_vessel.x + 25.5) > (player_ship.x + 25.5)) && (enemy_vessel.y > (player_ship.y + 180.2)) && ((enemy_vessel + 180.2) > (player_ship.y + 180.2))){
enemy_vessel.x -= 1.5;
enemy_vessel.y -= 1.5;
}
else if((enemy_vessel.x > player_ship.x) && ((enemy_vessel.x + 25.5) < (player_ship.x + 25.5)) && ((enemy_vessel.y + 180.2) < player_ship.y) && (enemy_vessel.y < player_ship.y)){
enemy_vessel.y += 1.5;
}
else if((enemy_vessel.x > player_ship.x) && ((enemy_vessel.x + 25.5) < (player_ship.x + 25.5)) && (enemy_vessel.y > (player_ship.y + 180.2)) && ((enemy_vessel.y + 180.2) > (player_ship.y + 180.2))){
enemy_vessel.y -= 1.5;
}
else if((enemy_vessel.y > player_ship.y) && ((enemy_vessel.y + 180.2) < (player_ship.y + 180.2)) && ((enemy_vessel.x + 25.5) < player_ship.x) && (enemy_vessel.x < player_ship.x)){
enemy_vessel.x += 1.5;
}
else if((enemy_vessel.y > player_ship.y) && ((enemy_vessel.y + 180.2) < (player_ship.y + 180.2)) && (enemy_vessel.x > (player_ship.x + 25.5)) && ((enemy_vessel.x + 25.5) > (player_ship.x + 25.5))){
enemy_vessel.x += 1.5;
}
}
I need help with these specific questions:
- What’s the right approach for making enemies follow the player smoothly?
- How can I implement enemy shooting mechanics?
- What’s the best way to detect when enemy ships collide with each other?
I really need working code examples since this project has a tight deadline. Thanks for any help you can provide.