I am creating my first game for a uni assignment and have an issue with some of my asteroids. They start off-screen (either left or right) at a random height, have a random speed, and a random angle. But for some reason, every now and then, an occasional asteroid flies horizontally, either at 0° or 180°. They have random height and speed, but not angle.
Space (World) declarations:-
Method inside Space (World):-
Asteroid Actor class
Thank you for your time. Any help would be much appreciated. I am learning :)
public static int asteroidHgt; // Random Y co-ordinate for each Asteroid start position
public static int asteroidSpd; // Random speed of each Asteroid
public static int asteroidDir; // Random direction for each Asteroid
public void sendAsteroid() {
if(Greenfoot.getRandomNumber(1000)<5) { // 0.5% chnce for new Asteroid
asteroidSpd = Greenfoot.getRandomNumber(2)+1;
asteroidHgt = Greenfoot.getRandomNumber(300);
Asteroid asteroid = new Asteroid();
if(Greenfoot.getRandomNumber(2)==0) { // Asteroid starts at either left of right side
addObject(asteroid,-20,asteroidHgt);
asteroidDir = 45-Greenfoot.getRandomNumber(30);
}
else {
addObject(asteroid,820,asteroidHgt);
asteroidDir = 135+Greenfoot.getRandomNumber(30);
}
}
public class Asteroid extends Actor
{
public int astHgt;
public int astSpd;
public int astDir;
public Asteroid()
{
astHgt=Space.asteroidHgt; // Sets random Asteroid starting height
astSpd=Space.asteroidSpd; // Sets random Asteroid speed
astDir=Space.asteroidDir; // Sets random Asteroid direction (rotation)
}
/**
* Act - do whatever the Asteroid wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if(Space.gameStarted == false || Space.stage==5) return;
setRotation(astDir);
move(astSpd);
if(Space.stage != 2) checkCollision(); // Checks for collisions but not during Stage 2
}
public void checkCollision()
{
//Everything here works fine and doesn't use or change the variables
}
}
