Example #1
0
        /// <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;
        }
Example #2
0
 /// <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)));
 }