67 lines
1.3 KiB
Java
67 lines
1.3 KiB
Java
import greenfoot.*;
|
|
|
|
public class Projectile2 extends Actor
|
|
{
|
|
Player2 owner;
|
|
Player1 enemy;
|
|
int direction;
|
|
|
|
int speed = 8;
|
|
int damage = 10;
|
|
|
|
int lifetime = 100;
|
|
|
|
|
|
int currentFrame = 0;
|
|
int animationTimer = 0;
|
|
boolean isInWorld = true;
|
|
boolean hit = false;
|
|
public Projectile2(int direction, Player2 pOwner, Player1 pEnemy)
|
|
{
|
|
this.direction = direction;
|
|
this.owner = pOwner;
|
|
enemy = pEnemy;
|
|
|
|
//Bilder für Schüsse nach links spiegeln
|
|
if (direction == -1) {
|
|
getImage().mirrorHorizontally();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public void act()
|
|
{
|
|
moveProjectile();
|
|
//animate();
|
|
checkHit();
|
|
|
|
lifetime--;
|
|
|
|
}
|
|
|
|
private void moveProjectile()
|
|
{
|
|
setLocation(getX() + speed * direction, getY());
|
|
}
|
|
|
|
private void checkHit()
|
|
{
|
|
if (getX() - enemy.getX() < 70 && getX() - enemy.getX() > -70 && getY() - enemy.getY() < 30 && getY() - enemy.getY() > -30 && isInWorld){
|
|
hit = true;
|
|
removeProjectile();
|
|
}
|
|
else if(lifetime <= 0 || isAtEdge()){
|
|
removeProjectile();
|
|
}
|
|
}
|
|
|
|
private void removeProjectile()
|
|
{
|
|
if (getWorld() != null) {
|
|
isInWorld = false;
|
|
getWorld().removeObject(this);
|
|
}
|
|
}
|
|
|
|
} |