Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

One last animated obstacle : Revolving Obstacle !

OK, here is probably the last Obstacle I’ll create. After that, I think I have enough to design cool levels. Revolving Obstacles... revolves... yeah I know, kinda obvious.

So here is the (short and easy) code for this ObstacleRevolving.java :

public class ObstacleRevolving extends Obstacle{
    
    private float speed = 90;

    public ObstacleRevolving(World world, OrthographicCamera camera, MapObject rectangleObject) {
        super(world, camera, rectangleObject);
        
        //Rotation speed
        if(rectangleObject.getProperties().get("Speed") != null)
            speed = Float.parseFloat((String) rectangleObject.getProperties().get("Speed"));
        
        body.setFixedRotation(false);
        body.setAngularVelocity(speed*MathUtils.degreesToRadians);
    }
    
    @Override
    public BodyType getBodyType(){
        return BodyType.KinematicBody;
    }
    
    @Override
    public void activate(){
        active = !active;
        
        if(active)
            body.setAngularVelocity(speed*MathUtils.degreesToRadians);
        else
            body.setAngularVelocity(0);
    }
}

About this code :

  • ObstacleRevolving extends Obstacle
  • ObstacleRevolving is formed by a KinematicBody
  • I read the properties of the TiledMapObject to determine the rotation speed...
  • ... and I apply the angular velocity
  • Finally, the activate() function called when we use an ItemSwitch to control the ObstacleRevolving sets the angular velocity to 0 or to the speed value, depending on if we turn the ObstacleRevolving on or off.
And guess what code we put in the main for loop of the TiledMapReader.java ? Yeah, you’re right :
for (RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)) {
            if(rectangleObject.getProperties().get("Type") != null){
                ...

                //Revolving obstacles
                else if(rectangleObject.getProperties().get("Type").equals("Revolving")){
                    ObstacleRevolving obstacle = new ObstacleRevolving(world, camera, rectangleObject);
                    obstacles.add(obstacle);
                }

                ...
            }
And here is the result !