Fixed bug where player sinks into the ground.
This commit is contained in:
parent
b2fe6338a5
commit
71a2ce2b40
@ -27,7 +27,6 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
|
||||
// Initialize the Engine
|
||||
engine = new Engine();
|
||||
|
||||
@ -76,7 +75,6 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
}
|
||||
|
||||
public void initializePlayer() {
|
||||
|
||||
player = new Entity();
|
||||
|
||||
CRenderedObject renderedObject = new CRenderedObject();
|
||||
|
@ -9,7 +9,7 @@ public class CPhysics extends Component {
|
||||
public Vector2 position = new Vector2();
|
||||
public Vector2 velocity = new Vector2();
|
||||
public Vector2 size = new Vector2();
|
||||
public float movespeed = 5f, jumpForce = 0.3f, gravity = 1f;
|
||||
public float movespeed = 5f, jumpForce = 0.5f, gravity = 1f;
|
||||
public boolean grounded = true;
|
||||
public CollisionListener collisionListener = null;
|
||||
|
||||
|
@ -15,6 +15,7 @@ import com.saltosion.gladiator.physics.CollisionSide;
|
||||
*/
|
||||
public class PhysicsSystem extends EntitySystem {
|
||||
|
||||
private static final float MAX_VEL = 0.5f;
|
||||
private ComponentMapper<CPhysics> pm = ComponentMapper.getFor(CPhysics.class);
|
||||
private ImmutableArray<Entity> entities;
|
||||
|
||||
@ -25,6 +26,7 @@ public class PhysicsSystem extends EntitySystem {
|
||||
|
||||
@Override
|
||||
public void update(float deltaTime) {
|
||||
deltaTime = Math.min(deltaTime, 0.033f);
|
||||
for (int i = 0; i < entities.size(); i++) {
|
||||
CPhysics obj = pm.get(entities.get(i));
|
||||
|
||||
@ -49,6 +51,8 @@ public class PhysicsSystem extends EntitySystem {
|
||||
obj.velocity.y -= obj.gravity * deltaTime;
|
||||
}
|
||||
|
||||
obj.velocity.y = Math.max(Math.min(obj.velocity.y, MAX_VEL), -MAX_VEL);
|
||||
|
||||
// Collisions
|
||||
if (obj.dynamic) {
|
||||
for (int j = 0; j < entities.size(); j++) {
|
||||
@ -112,6 +116,7 @@ public class PhysicsSystem extends EntitySystem {
|
||||
cp0.velocity.y = 0;
|
||||
}
|
||||
cp0.grounded = true;
|
||||
cp0.position.y += (y11 - y00) * 1.1f;
|
||||
|
||||
if (cp0.collisionListener != null) {
|
||||
cp0.collisionListener.collision(CollisionSide.BOTTOM, entity0, entity1);
|
||||
|
Loading…
Reference in New Issue
Block a user