private void Start() { projectileInitSetting = new ProjectileInitSetting(spawnPoint.position, 30, 180, 180); projectileSetting = new ProjectileSetting { moveSpeed = 3, lifeTime = 3, elementType = ElementType.None, }; }
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); }
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; }
public void InstantiateProjectile(GameObject projectilePrefab, IProjectileState state, ProjectileInitSetting projectileInitSetting, ProjectileSetting projectileSetting) { if (projectileTypes == null) { return; } StartCoroutine(DelayProjectileSpawn(projectilePrefab, state, projectileInitSetting, projectileSetting)); }