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)); }
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) ); }