예제 #1
0
 private void Start()
 {
     projectileInitSetting = new ProjectileInitSetting(spawnPoint.position, 30, 180, 180);
     projectileSetting     = new ProjectileSetting {
         moveSpeed = 3, lifeTime = 3, elementType = ElementType.None,
     };
 }
예제 #2
0
    public override void GenerateSkill(Character character, Skill skill)
    {
        base.GenerateSkill(character, skill);

        projectileInitSetting = new ProjectileInitSetting(sourceCaster.transform.position + Vector3.up * 0.7f, 6, 60, 100);
        projectileSetting     = new ProjectileSetting {
            moveSpeed = 3, lifeTime = 3, elementType = ElementType.Fire,
        };

        ProjectileSpawner.Instance.InstantiateProjectile(projectile, projectileState, projectileInitSetting, projectileSetting);
    }
예제 #3
0
    private IEnumerator DelayProjectileSpawn(GameObject projectilePrefab, IProjectileState state, ProjectileInitSetting projectileInitSetting, ProjectileSetting projectileSetting)
    {
        int angleChunk = projectileInitSetting.restrictAngle / projectileInitSetting.amount;    //在限制角度中平分角度
        int angle      = projectileInitSetting.angleOffset;

        for (int i = 0; i < projectileInitSetting.amount; i++)
        {
            Transform p = ObjectPools.Instance.GetObjectInPools(projectilePrefab.name, projectileInitSetting.initialPosition).transform;
            projectileSetting.initialAngle = projectileInitSetting.initialAngle;
            p.GetComponent <Projectile>().Setup(state, projectileSetting);

            if (p.GetComponent <ParticleSystem>() != null)
            {
                p.GetComponent <ParticleSystem>().Play();
            }

            angle += angleChunk;
            yield return(new WaitForSeconds(projectileSetting.shootDelay));
        }
        yield break;
    }
예제 #4
0
    public void InstantiateProjectile(GameObject projectilePrefab, IProjectileState state, ProjectileInitSetting projectileInitSetting, ProjectileSetting projectileSetting)
    {
        if (projectileTypes == null)
        {
            return;
        }

        StartCoroutine(DelayProjectileSpawn(projectilePrefab, state, projectileInitSetting, projectileSetting));
    }