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)); }
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; } } } } }
public void Update(GameTime gameTime, Player player) { foreach (RenderPlane renderplane in renderPlanes) { renderplane.UpdatePosition(player.getPosition()); } dimensionalUpdateDrawer.Update(gameTime); }
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) ); }