From 2eb3d62ebaf7c872d107294e98857cc77d1069cc Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 11 Jun 2022 19:34:08 -0500 Subject: [PATCH] Falling checks Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 --- maps/world1.map | Bin 295488 -> 295488 bytes src/sig/objects/Player.java | 65 ++++++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/maps/world1.map b/maps/world1.map index 80445bb7179b78f0e7a120e896ea28ec95f8c261..e4e52b496b476712e70caf983709354a69d4faf9 100644 GIT binary patch delta 87 zcmX@mB6OfdXaldv^m7d?Y?I|RI5ta*d}4<34A>^C8whMvxWO#Q$iTqB#lQ_E*%;U- ePmqzEET1FNY%kMpFT)7LOhC-M-Cl-;F%1AW7ZrT~ delta 65 zcmX@mB6OfdXalbZBjaX1k^jt-wPkoVdwX1Ao~R(g&d9*Pz{S8lSxQBDvV4w6v%O5a Sy$mA|GXXL4c6%8X#xwv{I1p(7 diff --git a/src/sig/objects/Player.java b/src/sig/objects/Player.java index dbcad0e..7059932 100644 --- a/src/sig/objects/Player.java +++ b/src/sig/objects/Player.java @@ -369,27 +369,71 @@ public class Player extends AnimatedObject implements CollisionEntity { if (x==getX()) { continue; } - if (RabiClone.COLLISION[(int)((getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2)*RabiClone.BASE_WIDTH+(x-RabiClone.level_renderer.getX()+getCollisionBox().getX2()-getSprite().getWidth()/2))]) { + 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; x_velocity = Math.signum(x_velocity)*0.000001; sideCollision=true; - setX(x-1); - } + setX(startingX); + break; + } else { + startingX=x; + } } } else { for (int x=(int)getX();x>startingX+displacement_x;x--) { if (x==getX()) { continue; } - if (RabiClone.COLLISION[(int)((getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2)*RabiClone.BASE_WIDTH+(x-RabiClone.level_renderer.getX()+getCollisionBox().getX()-getSprite().getWidth()/2))]) { + 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 (!checkCollision(getX()-RabiClone.level_renderer.getX()+getCollisionBox().getX()-getSprite().getWidth()/2,getY()-RabiClone.level_renderer.getY()-getSprite().getHeight()/2+getCollisionBounds().getY2()+1)) { + groundCollision=false; + } else { + groundCollision=true; + jumpCount=maxJumpCount; + } + } + double startingY=getY(); + if (displacement_y>0) { + for (int y=(int)getY();ystartingX+displacement_x;x--) { + if (x==getX()) { + 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 = Math.signum(x_velocity)*0.000001; sideCollision=true; setX(x+1); } } - } - groundCollision=true; + }*/ if (!groundCollision){ this.setY(this.getY()+displacement_y); y_acceleration = GRAVITY; @@ -408,6 +452,15 @@ public class Player extends AnimatedObject implements CollisionEntity { } } + private boolean checkCollision(double x,double y) { + int index = (int)y*RabiClone.BASE_WIDTH+(int)x; + if (index>=0&&index