public static DefaultEnemy createRandomEnemy(float sizeMin = 3f, float sizeMax = 5f, float speedMin = 2f, float speedMax = 20f, float rotationSpeedMin = -1.3f, float rotationSpeedMax = 1.3f, float minCooldown = 0.5f, float maxCooldown = 1.0f) { float widthHeight = Random.Range(sizeMin, sizeMax); if (!findNewFreePosition(widthHeight, widthHeight, out Vector2 position)) { return(null); } float speed = Random.Range(speedMin, speedMax); float targetX = Random.Range(-10f, 10f); float targetY = Random.Range(-10f, 10f); float rotationSpeed = Random.Range(rotationSpeedMin, rotationSpeedMax); if (rotationSpeed < 0.05f && rotationSpeed > -0.05f) { if (rotationSpeed > 0) { rotationSpeed += 0.1f; } else { rotationSpeed -= 0.1f; } } float startDegrees = Random.Range(0.0f, 360.0f); SeekingEnemy enemy = (SeekingEnemy)createNewEnemy(position.x, position.y, widthHeight, widthHeight, targetX, targetY, speed, rotationSpeed, startDegrees, "Prefabs/Enemies/SeekingEnemy"); enemy.m_cooldown = Random.Range(minCooldown, maxCooldown); enemy.m_speedMin = speedMin; enemy.m_speedMax = speedMax; return(enemy); }
override protected void spawn() { SeekingEnemy.createRandomEnemy(m_sizeMin, m_sizeMax, m_speedMin, m_speedMax, m_rotationSpeedMin, m_rotationSpeedMax, m_cooldownMin, m_cooldownMax); if (m_spawnInterval > 2f) { m_spawnInterval *= 0.9f; } if (m_speedMax < 40.0f) { m_speedMin *= 1.1f; m_speedMax *= 1.1f; } if (m_cooldownMax > 0.2f) { m_cooldownMin *= 0.9f; m_cooldownMax *= 0.9f; } }