Player 1 and Player 2 have the same code but only Player 1 can shoot the other one doesn't shoot.
Player 1:
Bullet1:
and now Player2:
Bullet2:
Why Player2 doesn't shoot?
public class Player1 extends Actor
{
public void act()
{
if (Greenfoot.isKeyDown("w"))
{
setLocation(getX(), getY() - 10);
}
if (Greenfoot.isKeyDown("s"))
{
setLocation(getX(), getY() + 10);
}
if("c".equals(Greenfoot.getKey()))
{
Schoot();
}
}
private void Shoot()
{
Bullet1 bullet1 = new Bullet1();
getWorld().addObject(kugel1, getX(), getY());
bullet1.move(40);
}
}public class Bullet1 extends Actor
{
public void act()
{
setLocation(getX() + 1, getY());
checkContaktPlayer2();
bulletDisappear();
}
private void bulletDisappear() {
if (getX() >= 999)
{
getWorld().removeObject(this);
}
}
private void checkContaktPlayer2()
{
Actor player2 = getOneIntersectingObject(Player2.class);
if (player2 !=null)
{
getWorld().removeObject(player2);
}
}
}public class Player2 extends Actor
{
public void act()
{
if (Greenfoot.isKeyDown("up"))
{
setLocation(getX(), getY() - 10);
}
if (Greenfoot.isKeyDown("down"))
{
setLocation(getX(), getY() + 10);
}
if("space".equals(Greenfoot.getKey()))
{
Shoot();
}
}
private void Shoot()
{
Bullet2 bullet2 = new Bullet2();
getWorld().addObject(new Bullet2(), getX(), getY());
bullet2.move(-40);
}
}public class Bullet2 extends Actor
{
public void act()
{
setLocation(getX() - 1, getY());
checkContaktPlayer1();
bulletDisappear();
}
private void bulletDisappear() {
if (getX() >= 1)
{
getWorld().removeObject(this);
}
}
private void checkContaktPlayer1()
{
Actor player1 = getOneIntersectingObject(Player1.class);
if (player1 !=null)
{
getWorld().removeObject(player1);
}
}
}
