Right. So I was making this simple game. The player is two tiles wide, and four tiles high. My current code is really buggy (it was better before my rewrite)
Here it is:
float newx = position.x + velocity.x;
float newy = position.y + velocity.y;
int tx = (int) newx;
int ty = (int) newy;
Tile tile = WorldHandler.currentWorld.getTile(tx, ty);
Tile ground = WorldHandler.currentWorld.getTile((int) position.x, (int) position.y-1);
if (tile.type == 0) {
position.x = newx;
position.y = newy;
}
if (ground.type != 0) {
grounded = true;
//position.y = Math.round(position.y);
}
if (grounded) {
velocity.x = 0.0f;
velocity.y = 0.0f;
//position.y = Math.round(position.y);
} else {
velocity.x = velocity.x * (1.0f - Math.min(0.1f, 1.0f));
velocity.y += 0.0f;
}
it basically uses the indices for performance.
But I need a decent collision detection system that wouldn't be painful to implement, would AARBs be of use here? Also, the game loop is a tick based one, it runs at 30 ticks/s.