コード例 #1
0
ファイル: CollisionDetection.cs プロジェクト: XMUBQ/MarioGame
        private void CheckPlayerEnemyCollision()
        {
            Rectangle playerHitbox = SuperMarioBros.Instance.GameStateManager.Player.Rectangle;

            foreach (IEnemy enemy in world.Enemies)
            {
                Rectangle enemyHitbox  = enemy.Rectangle;
                Rectangle intersection = Rectangle.Intersect(playerHitbox, enemyHitbox);

                if (!intersection.IsEmpty)
                {
                    CollisionSide side = GetCollisionSide(intersection, playerHitbox, enemyHitbox);
                    EnemyCollisionHandler.HandleCollision(enemy, SuperMarioBros.Instance.GameStateManager.Player, side);
                }
            }
        }
コード例 #2
0
ファイル: CollisionDetection.cs プロジェクト: XMUBQ/MarioGame
        private void CheckEnemyEnemyCollision()
        {
            foreach (IEnemy colliderEnemy in world.Enemies)
            {
                foreach (IEnemy collidedEnemy in world.Enemies)
                {
                    if (collidedEnemy != colliderEnemy)
                    {
                        Rectangle colliderEnemyHitbox = colliderEnemy.Rectangle;
                        Rectangle enemyHitbox         = collidedEnemy.Rectangle;
                        Rectangle intersection        = Rectangle.Intersect(colliderEnemyHitbox, enemyHitbox);

                        if (!intersection.IsEmpty)
                        {
                            CollisionSide side = GetCollisionSide(intersection, colliderEnemyHitbox, enemyHitbox);
                            EnemyCollisionHandler.HandleCollision(colliderEnemy, collidedEnemy, side);
                        }
                    }
                }
            }
        }
コード例 #3
0
ファイル: CollisionDetection.cs プロジェクト: XMUBQ/MarioGame
        private void CheckEnemyBlockCollision()
        {
            foreach (IEnemy enemy in world.Enemies)
            {
                IList <IBlock> blocksInScope = FindBlocksCollidedWithGameObject(enemy);

                foreach (IBlock block in blocksInScope)
                {
                    if (block != null)
                    {
                        Rectangle enemyHitbox  = enemy.Rectangle;
                        Rectangle blockHitbox  = block.Rectangle;
                        Rectangle intersection = Rectangle.Intersect(enemyHitbox, blockHitbox);
                        if (!intersection.IsEmpty)
                        {
                            CollisionSide side = GetCollisionSide(intersection, enemyHitbox, blockHitbox);
                            EnemyCollisionHandler.HandleCollision(enemy, block, side);
                        }
                    }
                }
            }
        }