/// <summary>
        /// 多次攻击
        /// </summary>
        /// <param name="deployer"></param>
        /// <returns></returns>
        private IEnumerator RepeatDamage(SkillDeployer deployer)
        {
            float atkTime = 0;

            do
            {
                OnceDamage();
                yield return(new WaitForSeconds(data.atkInterval));

                atkTime += data.atkInterval;
                // 重新计算攻击目标
                deployer.CalculateTargets();
            } while (atkTime < data.durationTime);
        }
Exemple #2
0
        /// <summary>
        /// 生成技能
        /// </summary>
        public void GenerateSkill(SkillData data)
        {
            Debug.Log($"生成技能:{data.name}持续时间:{data.durationTime}");
            // GameObject skillGo = Instantiate (data.skillPrefab);
            // skillGo.transform.position = Vector3.forward ;

            // 采用对象池生成技能
            GameObject skillGo = GameObejctPool.Instance.CreateObject(data.prefabName, data.skillPrefab, transform.position, transform.rotation);

            // 释放器
            SkillDeployer deployer = skillGo.GetComponent <SkillDeployer> ();

            deployer.SkillData = data;
            deployer.DeploySkill();
            // 销毁技能
            // Destroy (skillGo, data.durationTime);

            // 回收技能
            GameObejctPool.Instance.CollectObejct(skillGo, data.durationTime);

            // 开启技能冷却
            StartCoroutine("CollTimeDown", data);
        }
 public void Execute(SkillDeployer deployer)
 {
     data = deployer.SkillData;
     deployer.StartCoroutine(RepeatDamage(deployer));
 }