47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
|
|
|
public class Enemy extends Actor
|
|
{
|
|
int targetX;
|
|
int targetY;
|
|
|
|
boolean targetReached = false;
|
|
|
|
int speed = 3;
|
|
public Enemy (int targetX, int targetY) {
|
|
this.targetX = targetX;
|
|
this.targetY = targetY;
|
|
}
|
|
|
|
int shootTimer;
|
|
public void act()
|
|
{
|
|
shootAtPlayer();
|
|
if (!targetReached){
|
|
moveToTargetLocation(targetX, targetY);
|
|
}
|
|
|
|
}
|
|
|
|
public void moveToTargetLocation(int targetX, int targetY){
|
|
double dx = targetX - getX();
|
|
double dy = targetY - getY();
|
|
double distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
|
|
if (distance < 2){
|
|
targetReached = true;
|
|
}
|
|
setLocation(getX() + (int)(dx/distance*speed), getY() + (int)(dy/distance*speed));
|
|
}
|
|
|
|
public void shootAtPlayer(){
|
|
shootTimer++;
|
|
if (shootTimer >= 100){
|
|
Player player = getWorld().getObjects(Player.class).get(0);
|
|
EnemyProjectile enemyProjectile = new EnemyProjectile();
|
|
getWorld().addObject(enemyProjectile, getX(), getY());
|
|
enemyProjectile.turnTowards(player.getX(), player.getY());
|
|
shootTimer = 0;
|
|
}
|
|
}
|
|
}
|