GammelJAN 5 years ago
commit af5628949d

@ -61,7 +61,7 @@ public class Projectile {
for(Polygon collision : wall.getCollisionPolygons()){ for(Polygon collision : wall.getCollisionPolygons()){
if(Intersector.overlapConvexPolygons(polygon, collision)){ if(Intersector.overlapConvexPolygons(polygon, collision)){
float[] vertices = collision.getVertices(); float[] vertices = collision.getVertices();
collisionAngle = StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7]); collisionAngle = StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[2], (int) vertices[3]);
break; break;
} }
} }
@ -69,10 +69,10 @@ public class Projectile {
setxPos((int) (getxPos() - this.movementX)); setxPos((int) (getxPos() - this.movementX));
setyPos((int) (getyPos() - this.movementY)); setyPos((int) (getyPos() - this.movementY));
double alpha = Math.atan(movementY/movementX); double alpha = StaticMath.calculateAngle(0,0, (int) movementX, (int) movementY);
double delta = (Math.PI / 2) - collisionAngle; double delta = (Math.PI / 2) - collisionAngle;
double beta = +((Math.PI / 2) - alpha - delta); double beta = +((Math.PI / 2) - alpha - delta);
double phi = beta + wall.getRotation(); double phi = beta + collisionAngle;
movementX = Math.cos(phi) * SPEED; movementX = Math.cos(phi) * SPEED;
movementY = Math.sin(phi) * SPEED; movementY = Math.sin(phi) * SPEED;

Loading…
Cancel
Save