示例#1
0
        public void SetUp(BulletStateCtrl p_projectileHandler)
        {
            _projectileHandler = p_projectileHandler;

            if (_bulletGraph != null)
            {
                _bulletWave = _bulletGraph.bulletWave;

                _currentPattern = _bulletWave.GetDefaultPattern();
            }

            SetBulletLauncher();
        }
示例#2
0
    private BulletInstanceDefinition[] GetWaveDefinitions(BulletWave wave)
    {
        BulletInstanceDefinition[] ret = new BulletInstanceDefinition[wave.amount];
        float arcStart = wave.rotation;
        float arcEnd   = wave.rotation + wave.range;

        for (int i = 0; i < wave.amount; i++)
        {
            float offset = (float)i / (float)wave.amount;
            float angle  = GeometryUtils.AngleInArc(arcStart, arcEnd, offset);
            angle           += ignoreRotation? 0 : transform.rotation.eulerAngles.z;
            ret[i].position  = GeometryUtils.PointInCircle(spawnRadiusOffset, angle);
            ret[i].position += transform.position + (Vector3)spawnOffset;

            ret[i].rotation = Quaternion.Euler(0, 0, angle);
        }
        return(ret);
    }
示例#3
0
    private void OnDrawGizmos()
    {
        float radius = spawnRadiusOffset > 0 ? spawnRadiusOffset : 0.05f;

        Gizmos.DrawWireSphere(transform.position + (Vector3)spawnOffset, radius);

        Color stored = Gizmos.color;

        foreach (BulletSpawnDefinition waveDef in waves)
        {
            BulletWave wave = waveDef.wave;
            Gizmos.color = wave.debugColor;
            BulletInstanceDefinition[] waveDefinitions = GetWaveDefinitions(wave);
            foreach (BulletInstanceDefinition def in waveDefinitions)
            {
                Gizmos.DrawLine(def.position, def.position +
                                (ignoreRotation? Vector3.right :
                                 def.rotation * Vector3.right));
            }
        }

        Gizmos.color = stored;
    }
示例#4
0
    private void SpawnWave(BulletWave wave)
    {
        BulletInstanceDefinition[] waveDefinitions = GetWaveDefinitions(wave);

        List <Transform> newProjectiles = new List <Transform>();

        foreach (BulletInstanceDefinition def in waveDefinitions)
        {
            Transform newP = Transform.Instantiate(wave.projectile, def.position, def.rotation);
            newP.gameObject.SetActive(false);
            newProjectiles.Add(newP);
            ApplyDamageOnCollision damageOnCollision = newP.GetComponent <ApplyDamageOnCollision>();
            if (damageOnCollision != null)
            {
                damageOnCollision.Damage = wave.damage;
            }
        }

        foreach (Transform t in newProjectiles)
        {
            t.gameObject.SetActive(true);
        }
    }