fix up falling mechanics

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 3 years ago
parent 2eb3d62eba
commit fd697a3f39
  1. BIN
      maps/world1.map
  2. 59
      src/sig/objects/Player.java

Binary file not shown.

@ -364,35 +364,33 @@ public class Player extends AnimatedObject implements CollisionEntity {
boolean sideCollision = false; boolean sideCollision = false;
double startingX=getX(); double startingX=getX();
if (displacement_x>0) { if (Math.abs(displacement_x)>0.00001) {
for (int x=(int)getX();x<startingX+displacement_x;x++) { if (displacement_x>0) {
if (x==getX()) { for (int x=(int)getX();x<startingX+displacement_x;x++) {
continue; if (x==getX()) {
} continue;
if (checkCollision(x-RabiClone.level_renderer.getX()+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()))) { }
x_acceleration = 0; if (checkCollision(x-RabiClone.level_renderer.getX()+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()))) {
x_velocity = Math.signum(x_velocity)*0.000001; x_acceleration = 0;
sideCollision=true; x_velocity = 0.000001;
setX(startingX); sideCollision=true;
break; setX(x-0.1);
} else { break;
startingX=x; }
} }
} } else {
} else { for (int x=(int)getX();x>startingX+displacement_x;x--) {
for (int x=(int)getX();x>startingX+displacement_x;x--) { if (x==getX()) {
if (x==getX()) { continue;
continue; }
if (checkCollision((x-RabiClone.level_renderer.getX()+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2+getCollisionBounds().getY2())) {
x_acceleration = 0;
x_velocity = -0.000001;
sideCollision=true;
setX(x+0.1);
break;
}
} }
if (checkCollision((x-RabiClone.level_renderer.getX()+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2+getCollisionBounds().getY2())) {
x_acceleration = 0;
x_velocity = Math.signum(x_velocity)*0.000001;
sideCollision=true;
setX(startingX);
break;
} else {
startingX=x;
}
} }
} }
if (y_velocity==0) { if (y_velocity==0) {
@ -410,16 +408,15 @@ public class Player extends AnimatedObject implements CollisionEntity {
continue; continue;
} }
if (checkCollision(getX()-RabiClone.level_renderer.getX(),y-RabiClone.level_renderer.getY()+getCollisionBox().getY2()-getSprite().getHeight()/2)) { if (checkCollision(getX()-RabiClone.level_renderer.getX(),y-RabiClone.level_renderer.getY()+getCollisionBox().getY2()-getSprite().getHeight()/2)) {
setY((startingY)); setY(y-0.1);
y_acceleration = 0; y_acceleration = 0;
y_velocity = 0; y_velocity = 0;
groundCollision = true; groundCollision = true;
if (state != State.SLIDE) { if (state != State.SLIDE) {
state = State.IDLE; state = State.IDLE;
} }
} else { break;
startingY=y; }
}
} }
}/* else { }/* else {
for (int x=(int)getX();x>startingX+displacement_x;x--) { for (int x=(int)getX();x>startingX+displacement_x;x--) {

Loading…
Cancel
Save