Platforming mishaps fixed
Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
9e2c67c138
commit
9965f91a76
BIN
maps/world1.map
BIN
maps/world1.map
Binary file not shown.
@ -361,62 +361,7 @@ public class Player extends AnimatedObject implements CollisionEntity {
|
|||||||
double displacement_x = x_velocity*updateMult;
|
double displacement_x = x_velocity*updateMult;
|
||||||
|
|
||||||
boolean sideCollision = false;
|
boolean sideCollision = false;
|
||||||
|
boolean hitAbove=false;
|
||||||
double startingX=getX();
|
|
||||||
if (displacement_x>0.00001) {
|
|
||||||
for (int x=(int)getX();x<startingX+displacement_x;x++) {
|
|
||||||
if (x==getX()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()))||
|
|
||||||
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()))) {
|
|
||||||
if (!(checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()-1))&&
|
|
||||||
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()-1)))) {
|
|
||||||
setY(getY()-1);
|
|
||||||
} else {
|
|
||||||
x_acceleration = 0;
|
|
||||||
x_velocity = 0.000001;
|
|
||||||
sideCollision=true;
|
|
||||||
setX(x-0.1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+1))&&
|
|
||||||
checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
|
||||||
//System.out.println("Performs check."+System.currentTimeMillis());
|
|
||||||
setY(getY()+1);
|
|
||||||
//x_velocity = ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
if (displacement_x<-0.00001) {
|
|
||||||
for (int x=(int)getX();x>startingX+displacement_x;x--) {
|
|
||||||
if (x==getX()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (checkCollision((x+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2())||
|
|
||||||
checkCollision((x+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-getSprite().getHeight()/2+getCollisionBounds().getY())) {
|
|
||||||
if (!(checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()-1))&&
|
|
||||||
checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()-1)))) {
|
|
||||||
setY(getY()-1);
|
|
||||||
} else {
|
|
||||||
x_acceleration = 0;
|
|
||||||
x_velocity = -0.000001;
|
|
||||||
sideCollision=true;
|
|
||||||
setX(x+0.1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+1))&&
|
|
||||||
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
|
||||||
//System.out.println("Performs check."+System.currentTimeMillis());
|
|
||||||
setY(getY()+1);
|
|
||||||
//x_velocity = ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (y_velocity==0) {
|
if (y_velocity==0) {
|
||||||
if (!(checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX2(),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2)||
|
if (!(checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX2(),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2)||
|
||||||
checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX(),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX(),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
||||||
@ -454,14 +399,74 @@ public class Player extends AnimatedObject implements CollisionEntity {
|
|||||||
if (checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX2()-1,y+getCollisionBox().getY()-getSprite().getHeight()/2)||
|
if (checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX2()-1,y+getCollisionBox().getY()-getSprite().getHeight()/2)||
|
||||||
checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX()+1,y+getCollisionBox().getY()-getSprite().getHeight()/2)) {
|
checkCollision(getX()-getSprite().getWidth()/2+getCollisionBox().getX()+1,y+getCollisionBox().getY()-getSprite().getHeight()/2)) {
|
||||||
setY(y+1);
|
setY(y+1);
|
||||||
|
hitAbove=true;
|
||||||
|
spacebarPressed=0;
|
||||||
|
state=State.FALLING;
|
||||||
y_acceleration = 0;
|
y_acceleration = 0;
|
||||||
y_velocity = 0;
|
y_velocity = 0;
|
||||||
groundCollision = true;
|
displacement_y=0;
|
||||||
|
//groundCollision = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double startingX=getX();
|
||||||
|
if (displacement_x>0.00001) {
|
||||||
|
for (int x=(int)getX();x<startingX+displacement_x;x++) {
|
||||||
|
if (x==getX()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()))||
|
||||||
|
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()))) {
|
||||||
|
if (!(checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()-2))||
|
||||||
|
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()-2)))) {
|
||||||
|
setY(getY()-1);
|
||||||
|
} else {
|
||||||
|
x_acceleration = 0;
|
||||||
|
x_velocity = 0.000001;
|
||||||
|
sideCollision=true;
|
||||||
|
setX(x-0.1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!hitAbove&&!checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+1))&&
|
||||||
|
checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
||||||
|
//System.out.println("Performs check."+System.currentTimeMillis());
|
||||||
|
setY(getY()+1);
|
||||||
|
//x_velocity = ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (displacement_x<-0.00001) {
|
||||||
|
for (int x=(int)getX();x>startingX+displacement_x;x--) {
|
||||||
|
if (x==getX()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (checkCollision((x+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-getSprite().getHeight()/2+getCollisionBounds().getY2())||
|
||||||
|
checkCollision((x+getCollisionBox().getX()-getSprite().getWidth()/2),getY()-getSprite().getHeight()/2+getCollisionBounds().getY())) {
|
||||||
|
if (!(checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()-2))||
|
||||||
|
checkCollision(x+getCollisionBox().getX()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY()-2)))) {
|
||||||
|
setY(getY()-1);
|
||||||
|
} else {
|
||||||
|
x_acceleration = 0;
|
||||||
|
x_velocity = -0.000001;
|
||||||
|
sideCollision=true;
|
||||||
|
setX(x+0.1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!hitAbove&&!checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+1))&&
|
||||||
|
checkCollision(x+getCollisionBox().getX2()-getSprite().getWidth()/2,(getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+2))) {
|
||||||
|
//System.out.println("Performs check."+System.currentTimeMillis());
|
||||||
|
setY(getY()+1);
|
||||||
|
//x_velocity = ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!groundCollision){
|
if (!groundCollision){
|
||||||
this.setY(this.getY()+displacement_y);
|
this.setY(this.getY()+displacement_y);
|
||||||
y_acceleration = GRAVITY;
|
y_acceleration = GRAVITY;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user