public async Task DoActionAsync(CoreBase trainBy) { for (int i = 0; i < Amount; i++) { CoreBase g = Prefabs.Instantiate(Identify).GetComponent <CoreBase>(); g.transform.SetOnHorizon(trainBy.transform.position.x); // TroopDetails det = g.GetComponent <CoreBase>().GetDetails <TroopDetails>(); det.DeBuff.AddFlag(AgentDeBuff.Freeze); det.SetLevel(trainBy.Details.Level); // g.transform.parent = trainBy.transform.parent; g.SetTeam(trainBy.Team); await Awaiters.Seconds(0.1f); } }
/// <summary> /// 產生護盾 /// </summary> public void MakeShield() { if (ShieldTime <= 0) { if (Shield != null) { Shield.GetDetails <TroopDetails>().HitPoint = 0; } Shield = Instantiate(InstantiateObject).GetComponent <CoreBase>(); Shield.Team = _agent.Team; Shield.gameObject.layer = 16; TroopDetails det = Shield.GetComponent <CoreBase>().GetDetails <TroopDetails>(); det.Level = _agent.GetDetails <DetailsBase>().Level; float scale = Mathf.Pow(det.GrowthRate, det.Level - 1); det.MaxHitPoint = det.HitPoint = (int)(det.MaxHitPoint * scale); det.Damage = (int)(det.Damage * scale); det.KnockBack = (int)(det.KnockBack * scale); det.Gold = (int)(det.Gold * scale); Shield.transform.position = transform.position; ShieldTime = ShieldCoolDown; } }
/// <summary> /// 初始化 /// </summary> protected override void Awake() { _details = new TroopDetails(Identify); base.Awake(); }