Esempio n. 1
0
        /// <summary>
        /// When the create asteroid signal is broadcast, set up an asteroid at a particular location
        /// </summary>
        /// <param name="signal"></param>
        /// <returns></returns>
        private bool OnCreateAsteroidSignal(CreateAsteroidSignal signal)
        {
            signal.position.x = Mathf.Clamp(signal.position.x, bounds.xMin, bounds.xMax);
            signal.position.y = Mathf.Clamp(signal.position.y, bounds.yMin, bounds.yMax);

            var asteroid = GameObject.Instantiate <Asteroid>(asteroidPrefab, signal.position, Quaternion.identity, this.transform);

            asteroid.Size   = signal.size;
            asteroid.Bounds = bounds;

            return(true);
        }
Esempio n. 2
0
        void Awake()
        {
            _cachedTransform = this.transform;

            _axis = new Vector3(Random.Range(0, 360), Random.Range(0, 360), Random.Range(0, 360));
            var speed    = Random.Range(minMaxSpeed.x, minMaxSpeed.y);
            var radAngle = Random.Range(0, 360f) * Mathf.Deg2Rad;

            _direction = new Vector3(Mathf.Cos(radAngle), Mathf.Sin(radAngle), 0) * speed;

            // cache the create asteroid signal so that we don't have to keep recreating it
            _createAsteroidSignal = new CreateAsteroidSignal();
        }
Esempio n. 3
0
        /// <summary>
        /// When the reset signal is broadcast, destroy all the asteroids, then
        /// create new ones
        /// </summary>
        /// <param name="signal"></param>
        /// <returns></returns>
        private bool OnResetGameSignal(ResetGameSignal signal)
        {
            var asteroids = GetComponentsInChildren <Asteroid>();

            foreach (var asteroid in asteroids)
            {
                Destroy(asteroid.gameObject);
            }

            CreateAsteroidSignal create = new CreateAsteroidSignal();

            for (var i = 0; i < asteroidCount; i++)
            {
                var spawnRadius = Random.Range(minMaxSpawnRadius.x, minMaxSpawnRadius.y);
                var spawnAngle  = Random.Range(0, 360f) * Mathf.Deg2Rad;
                create.position = new Vector3(Mathf.Cos(spawnAngle), Mathf.Sin(spawnAngle), 0) * spawnRadius;
                create.size     = Asteroid.AsteroidSize.Large;

                OnCreateAsteroidSignal(create);
            }

            return(true);
        }