/// <summary> /// Metoda sprawdzająca, czy dany obiekt koliduje (w dowolnym kierunku) z innym. /// </summary> /// <param name="obj">Obiekt, z który mają być sprawdzane kolizje.</param> /// <returns></returns> public bool CollidesWith(GameObject obj) { // return intersects(obj); //return ((this.Position.Y <= obj.Position.Y + Field.FieldHeight && this.Position.Y + Field.FieldHeight >= obj.Position.Y) || // (this.Position.Y + Field.FieldHeight >= obj.Position.Y && this.Position.Y + Field.FieldHeight <= obj.Position.Y + Field.FieldHeight)) // && // ((this.Position.X <= obj.Position.X + Field.FieldWidth && this.Position.X >= obj.Position.X) || // (this.Position.X + Field.FieldWidth <= obj.Position.X + Field.FieldWidth && this.Position.X + Field.FieldWidth >= obj.Position.X)); bool collided = ((this.Position.Y <= obj.Position.Y + obj.Height && this.Position.Y >= obj.Position.Y) || (this.Position.Y + this.Height >= obj.Position.Y && this.Position.Y + this.Height <= obj.Position.Y + obj.Height)) && ((this.Position.X <= obj.Position.X + obj.Width && this.Position.X >= obj.Position.X) || (this.Position.X + this.Width <= obj.Position.X + obj.Width && this.Position.X + this.Width >= obj.Position.X)); if (collided && game.GameState.GatesOpen && obj is SpaceGate) { game.GameState.LevelCompleted = true; } return collided; }
/// <summary> /// Metoda sprawdzająca, czy dany obiekt koliduje z innym, ale tylko w kiernku poziomym. /// </summary> /// <param name="obj">Obiekt, z który mają być sprawdzane kolizje.</param> /// <returns></returns> public bool CollidesHorizontallyWith(GameObject obj) { //return ((this.Position.Y <= obj.Position.Y + Field.FieldHeight && this.Position.Y + Field.FieldHeight >= obj.Position.Y) || // (this.Position.Y + Field.FieldHeight >= obj.Position.Y && this.Position.Y + Field.FieldHeight <= obj.Position.Y + Field.FieldHeight)) // && // ((this.Position.X <= obj.Position.X + Field.FieldWidth && this.Position.X >= obj.Position.X) || // (this.Position.X + Field.FieldWidth <= obj.Position.X + Field.FieldWidth && this.Position.X + Field.FieldWidth >= obj.Position.X)); //return ((this.Position.X <= obj.Position.X + obj.Width && this.Position.X >= obj.Position.X) || //(this.Position.X + this.Width <= obj.Position.X + obj.Width && this.Position.X + this.Width >= obj.Position.X)); return ((this.Position.Y + this.Height < obj.Position.Y + obj.Height) && (this.Position.Y + this.Height > obj.Position.Y) && ((Math.Abs(this.Position.X + this.Width - obj.Position.X) < EPS))); }