public bool Overlaps(CollisionBody body) { return (position.X + size.X > body.position.X && position.Y + size.Y > body.position.Y && position.X < body.position.X + body.size.X && position.Y < body.position.Y + body.size.Y); }
public MovingPlatform(Vector2 position1, Vector2 position2, Vector2 size, float speed) { this.position1 = position1; this.position2 = position2; this.targetPosition = position2; this.speed = speed; Body = new CollisionBody(position1, size); }
public CollidingBody Collides(Vector2 velocity, List <IBody> bodies) { var returnVal = new CollidingBody(); var bodyX = new CollisionBody(new Vector2(position.X + velocity.X, position.Y), size); foreach (var cBody in bodies) { if (bodyX.Overlaps(cBody.Body) && cBody.Body != this) { returnVal.bodies.Add(cBody); //returnVal.direction.X = Math.Sign(velocity.X); if (bodyX.position.X > position.X) { returnVal.direction.X = 1; } if (bodyX.position.X < position.X) { returnVal.direction.X = -1; } } } var bodyY = new CollisionBody(new Vector2(position.X, position.Y + velocity.Y), size); foreach (var cBody in bodies) { if (bodyY.Overlaps(cBody.Body) && cBody.Body != this) { returnVal.bodies.Add(cBody); //returnVal.direction.Y = Math.Sign(velocity.Y); if (bodyY.position.Y > position.Y) { returnVal.direction.Y = 1; } if (bodyY.position.Y < position.Y) { returnVal.direction.Y = -1; } } } return(returnVal); }
public Player() { Body = new CollisionBody(new Vector2(200, -400), new Vector2(30, 90)); }
public SimpleBody(CollisionBody Body) { this.Body = Body; }
public Platform(Vector2 position, Vector2 size) { Body = new CollisionBody(position, size); }
public Monster(Vector2 position) { Body = new CollisionBody(position, Vector2.One * 100); }