コード例 #1
0
        bool ICollidable.DetectCollision(Rectangle collidingObject, bool ignoreEdges)
        {
            foreach (var tileHit in TileMap.GetTilesHit(collidingObject))
            {
                if (tileHit.IsSpring)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #2
0
ファイル: Spike.cs プロジェクト: mp1011/Simple2DGame
        bool ICollidable.DetectCollision(Rectangle collidingObject, bool ignoreEdges)
        {
            foreach (var tileHit in TileMap.GetTilesHit(collidingObject))
            {
                var isSpike = tileHit.IsSpike && collidingObject.Bottom > tileHit.Position.Center.Y;
                if (isSpike)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        public static void CheckForBrokenTiles(ITileBreaker breaker, QuickGameTileMap map)
        {
            if (breaker.CanBreakTiles)
            {
                var tilesHit = map.GetTilesHit(breaker.Position).Where(p => p.IsBreakable).ToArray();

                var tileToBreak = tilesHit.OrderBy(p => p.Position.Center.GetAbsoluteDistanceTo(breaker.Position.Center)).FirstOrDefault();
                if (tileToBreak != null)
                {
                    breaker.CanBreakTiles = false;
                    BreakTile(tileToBreak);
                }
            }
        }