Hello all. I have been following a tutorial to make a simple shooting game. All works well except the projectiles! I have doubled checked that I've copied the code correctly and I wasn't able to spot any mistakes. If I right click on class `Defense` > `newDefnse()` and drag&drop the object on scene it works as it should and I get no errors. But it just won't appear on it own. Does anyone know why?
Note: I haven't added anything related to the `Defense` class in `MyWorld` (which I've named `Valley` so I won't include that code).
Actor `Defense`:
Actor `Bee`:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Defense extends Actor { public void act() { moveDefense(); removeFromWorld(); // needs to be added LAST } public void moveDefense() { setLocation(getX(), getY() - 5); // the int controls speed } public void removeFromWorld() { if (getY() == 0) // if obj touches top of the world { getWorld().removeObject(this); } } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Bee extends Actor { boolean canDefend = true; public Bee() { setRotation(270); // default is 0 -> right } public void act() { fly(); } public void fly() { if (Greenfoot.isKeyDown("right")) { setLocation(getX()+5, getY()); // we want to move right-left //so we're changing *only the x axis* // we add 5 because x is 0 on the left side (and at the top) } if (Greenfoot.isKeyDown("left")) { setLocation(getX()-5, getY()); // we subtract 5 because we're getting closer // to 0 on the left side } } public void myDefense() { if (Greenfoot.isKeyDown("space") && canDefend == true) { getWorld().addObject(new Defense(), getX(), getY()); // we want the projectile to have the x value of the player // and we want it to begin from the tip of the bee // so the y must be slight diffrent (closer to the top aka 0) canDefend = false; } else if (!Greenfoot.isKeyDown("space")) { canDefend = true; } } }