public override bool Execute(object skillStats) { bool res = base.Execute(skillStats); if (res) { PilumsVolleyStats stats = new PilumsVolleyStats(); if (skillStats != null) { stats = (PilumsVolleyStats)skillStats; if (countOfPilumsToVolley <= 0) { res = false; } } else { res = false; } if (res) { var init = new InitStruct() { owner = this.owner, castPosition = this.castPosition, countOfPilumsToVolley = this.countOfPilumsToVolley }; GameManager.Instance.StartCoroutine(DelayForExecute(stats, stats.Delay, init)); } } return(res); }
IEnumerator DelayForExecute(PilumsVolleyStats stats, float delay, InitStruct init) { yield return(new WaitForSeconds(1)); var volley = Instantiate(origin, init.owner.CenterSquad, init.owner.PositionsTransform.rotation); volley.Init(init.castPosition, stats.damage, stats.Distance, stats.speed, init.countOfPilumsToVolley, init.owner, CallBack); volley.StartVolley(); }