hello
my first question here !!
i’m using Libgdx with Box2D for collision and Box2DMapObjectParser(http://www.java-gaming.org/index.php?topic=29937.0)
the problem is that i set the camera to follow a player but the player moved too fast and the camera cant catch up
here is my code sample :
the play class :
@Override
public void show() {
//Initialize world , camera and renderer
world = new World(new Vector2(0, 0), true);
box2DRenderer = new Box2DDebugRenderer();
camera = new OrthographicCamera();
camera.setToOrtho(false,VIEWPORT_WIDTH/ PPM,VIEWPORT_HEIGHT/ PPM + 7);
//create map and parse it
TiledMap map = new TmxMapLoader().load("map/kuwait.tmx");
Box2DMapObjectParser parser = new Box2DMapObjectParser(0.03125f);
parser.load(world, map);
//error check code
System.out.println(MapUtils.readableHierarchy(map));
// Initialize map renderer
mapRenderer = new OrthogonalTiledMapRenderer(map, 0.03125f);
//initialize player
player = new Player();
@Override
public void render(float delta) {
//default page black start rending option
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
world.step(1/60f, 6, 2);
//move player
movePlayer();
/*7f is counted in meters(4 tiles for each meter) and not pixels and used to move camera up
so that it start from same starting point as the original tiled map.*/
camera.position.set(0/PPM, player.getVelocity().y/PPM,0);
camera.update();
mapRenderer.setView(camera);
mapRenderer.render();
//debug box2d renderer
box2DRenderer.render(world, camera.combined);
//render player .draw() include begin and end for batch sprite.
player.draw();
//player auto move up
player.setVelocityY(player.getVelocity().y +1.5f);
}
player class is like this :
public class Player extends Sprite{
//player variables
private SpriteBatch batch;
private Texture car;
private Vector2 velocity;
//screen variables
protected final int VIEWPORT_WIDTH = FinalValues.VIEWPORT_WIDTH,
VIEWPORT_HEIGHT =FinalValues.VIEWPORT_HEIGHT;
protected final float PPM = FinalValues.PPM;
//constructor for creating player in race map classes
public Player(){
batch = new SpriteBatch();
car = new Texture("entites/blueCarNormal.png");
car.setFilter(TextureFilter.Linear, TextureFilter.Linear);
Texture.setEnforcePotImages(false);
//Letting vector object determine car position (center width above bottom height)
velocity = new Vector2(VIEWPORT_WIDTH/2,VIEWPORT_HEIGHT/1.5f);
}
public void draw(){
batch.begin();
//draw car texture with given position of x and y from vector2 object
batch.draw(car, velocity.x, velocity.y);
batch.end();
}
public Vector2 getVelocity(){
return velocity;
}
public void setVelocityX(float value){
velocity.x = value;
}
public void setVelocityY(float value){
velocity.y = value;
what i am doing wrong ?
also for sprite and Box2D element should i use dermetfan class ?