예제 #1
0
        public static bool CheckCollision(Player p, Enemy e, DimensionalManager dm)
        {
            int activeDimensions = dm.GetNumberOfActiveDimensions();

            Position playerPostion = p.getPosition();
            Position enemyPosition = e.GetPosition();

            float playerWidth = p.getRadius();
            float enemyRadius = e.GetWidth();

            float totalDistance = 0.0f;

            for (int i = 0; i < activeDimensions; ++i)
            {
                float distance = Math.Abs(playerPostion.GetPosition(i) - enemyPosition.GetPosition(i));
                totalDistance += (distance * distance);

            }

            return totalDistance < ((playerWidth + enemyRadius) * (playerWidth + enemyRadius));
        }
예제 #2
0
        public void Render(EnemyManager enemyManager, Player player, SpriteBatch spriteBatch)
        {
            //Draw background square
              //  spriteBatch.Draw(Game1.square, renderTarget, bg);

            Position playerPos = player.getPosition();
            Vector2 pos = GetScaledPosition(getPlanarPosition(playerPos));

            renderPosition(spriteBatch, pos, Color.Aquamarine, 32);

            foreach (Enemy enemy in enemyManager.getEnemies())
            {

                Position enemyPosition = enemy.GetPosition();
                Vector2 planarPosition = getPlanarPosition(enemyPosition);

                //if we are rendering in 1D, the GetSize takes in to account the distance in the y axis
                float size = 2 * GetSize(enemy);

                if (IsInRenderFrame(planarPosition, size))
                {
                    Vector2 drawPosition = GetScaledPosition(planarPosition);

                    switch (enemy.GetEnemyType())
                    {
                        case EnemyType.StraightLine:
                            {
                                renderPosition(spriteBatch, drawPosition, Color.Red, size);
                                break;
                            }
                        default:
                            {
                                renderPosition(spriteBatch, drawPosition, Color.Black, size);
                                break;
                            }
                    }
                }
            }
        }
예제 #3
0
        public void Update(GameTime gameTime, Player player)
        {
            foreach (RenderPlane renderplane in renderPlanes)
            {
                renderplane.UpdatePosition(player.getPosition());
            }

            dimensionalUpdateDrawer.Update(gameTime);
        }
예제 #4
0
        private void SpawnEnemy(DimensionalManager dm, Player player)
        {
            int enemyType = Random.Next(Enum.GetNames(typeof(EnemyType)).Length);
            Position playerPos = player.getPosition();

            float[] position = new float[dm.GetNumberOfActiveDimensions()];
            double offSet;
            Random random = new Random();
            for(int i = 0; i< position.Length; ++i)
            {
                do
                {
                    offSet = random.NextDouble() - 0.5;
                    position[i] =
                        i % 2 == 0 ?
                        (float)(playerPos.GetPosition(i) + dm.GetScreenWidth() * offSet) :
                        (float)(playerPos.GetPosition(i) + dm.GetScreenHeight() * offSet);
                }
                while (Math.Abs(playerPos.GetPosition(i) - position[i]) < player.getRadius());
            }

            addEnemy(
                (EnemyType)enemyType,
                new Position(position)
                );
        }