private void UpdateSettings(ObstacleConfig config) { this.config = config; meshFilter.mesh = config.Mesh; meshRenderer.material = config.Material; sphereCollider.radius = config.Radius; }
IEnumerator Start() { _rb = GetComponent <Rigidbody>(); _config = GetComponent <Asteroid>().DefaultConfig as ObstacleConfig; yield return(new WaitUntil(() => _config != null)); ConfigureMovement(); }
protected virtual void removeConfig(ObstacleConfig config) { foreach (LayerOfObstacles layer in config.configLayers) { foreach (GameObject obstacle in layer.obstacles) { obstacle.gameObject.SetActive(false); obstacle.transform.Translate(0, 0, -layer.chosenLevel, Space.World); } } if (config.shouldSpin) { GetComponentInChildren <AxisRotator>().rotationsPerSecond = 0f; transform.GetChild(0).transform.localEulerAngles = startRotation; } transform.GetChild(0).transform.Rotate(Vector3.up * -rotationInUse); }
private ObstacleConfig getRandomConfig(TunnelSelectionPreferences prefs) { int max = getMaxDifficultyIndex(prefs); //Debug.Log (cumulativeSumOfWeights.Length + ", " + max); float rand = Random.Range(0, cumulativeSumOfWeights [max]); for (int i = 0; i < obstacleConfigs.Length; i++) { if (cumulativeSumOfWeights[i] >= rand) { ObstacleConfig chosen = obstacleConfigs[i]; return(chosen); } } //this also shouldn't happen return(obstacleConfigs [0]); }
protected virtual void applyConfig(ObstacleConfig config) { //Debug.Log ("Setting up " + config.name); foreach (LayerOfObstacles layer in config.configLayers) { layer.chosenLevel = layer.allowableLevels[Random.Range(0, layer.allowableLevels.Length)]; foreach (GameObject obstacle in layer.obstacles) { obstacle.gameObject.SetActive(true); obstacle.transform.Translate(0, 0, layer.chosenLevel, Space.World); } } rotationInUse = config.allowableRotations [UnityEngine.Random.Range(0, config.allowableRotations.Length)]; transform.GetChild(0).transform.Rotate(Vector3.up * rotationInUse); if (config.shouldSpin) { startRotation = transform.GetChild(0).transform.localEulerAngles; GetComponentInChildren <AxisRotator>().rotationsPerSecond = (Random.Range(0, 2) * 2 - 1) * Random.Range(minRotsPerSecond, maxRotsPerSecond); } }
public void Spawn(ObstacleConfig config, Vector3 direction) { UpdateSettings(config); movement.Launch(direction); }
public override void setup(TunnelSelectionPreferences prefs, TunnelPiece parent) { base.setup(prefs, parent); configInUse = getRandomConfig(prefs); applyConfig(configInUse); }
private ConfigurationData() { // set default values for level configs levelsConfig = new LevelConfig[2]; LevelConfig levelConfig = new LevelConfig("Level01"); // set default values for spaceships configs SpaceShipConfig[] spaceShipsConfig = new SpaceShipConfig[2]; // set default values for player configs PlayerShipConfig playerShipConfig = new PlayerShipConfig("Player", "Player"); playerShipConfig.health = new HealthConfig(100); playerShipConfig.movement = new MovementConfig(80); playerShipConfig.attack = new AttackConfig(200, 0.5f); // set default values for player bolt config BoltConfig playerBoltConfig = new BoltConfig("Player Bolt", "Bolt"); playerBoltConfig.movement = new MovementConfig(100); playerBoltConfig.attack = new AttackConfig(50); playerShipConfig.boltConfig = playerBoltConfig; spaceShipsConfig.SetValue(playerShipConfig, 0); // set default values for enemy config EnemyShipConfig enemyShipConfig = new EnemyShipConfig("Enemy", "SpaceItems/Enemy"); enemyShipConfig.health = new HealthConfig(50); enemyShipConfig.movement = new MovementConfig(60, 1.0f, 10.0f, 30.0f); enemyShipConfig.attack = new AttackConfig(70, 1.0f); enemyShipConfig.scoreValue = 150; // set default values for enemy bolt config BoltConfig enemyBoltConfig = new BoltConfig("Enemy Bolt", "Bolt"); enemyBoltConfig.movement = new MovementConfig(90); enemyBoltConfig.attack = new AttackConfig(30); enemyShipConfig.boltConfig = enemyBoltConfig; spaceShipsConfig.SetValue(enemyShipConfig, 1); levelConfig.spaceShipsConfig = spaceShipsConfig; // set default values for obstacles ObstacleConfig[] obstaclesConfig = new ObstacleConfig[1]; // set default values for asteroid config ObstacleConfig asteroidConfig = new ObstacleConfig("Red Asteroid", "SpaceItems/Red Asteroid"); asteroidConfig.health = new HealthConfig(100); asteroidConfig.movement = new MovementConfig(60, 0.25f); asteroidConfig.scoreValue = 100; asteroidConfig.attack = new AttackConfig(1000); obstaclesConfig.SetValue(asteroidConfig, 0); levelConfig.obstaclesConfig = obstaclesConfig; // set default values for collectible config CollectibleConfig[] collectiblesConfig = new CollectibleConfig[2]; // collectibleConfig.speed = 55; collectiblesConfig[0] = new CollectibleConfig("Health Powerup", "SpaceItems/Health Powerup"); collectiblesConfig[0].movement = new MovementConfig(55); collectiblesConfig.SetValue(new CollectibleConfig("FireRate Powerup", "SpaceItems/FireRate Powerup"), 1); collectiblesConfig[1].movement = new MovementConfig(60); levelConfig.collectiblesConfig = collectiblesConfig; // set default values for wave config WaveConfig waveConfig = new WaveConfig(); waveConfig.startWait = 0.5f; waveConfig.spawnWaveWait = 3.0f; waveConfig.spawnMessageDelay = 1.0f; waveConfig.spawnItemWait = 1.0f; waveConfig.itemsNumber = 5; levelConfig.waveConfig = waveConfig; levelsConfig.SetValue(levelConfig, 0); }