/// <summary> /// 普通攻擊 /// </summary> public void NormalAttack() { LockedAgent.GetDetails <DetailsBase>().HitPoint -= _agent.GetDetails <TroopDetails>().Damage; if (LockedAgent.GetDetails <DetailsBase>().Type == AgentType.Troop && _agent.GetDetails <TroopDetails>().Damage >= LockedAgent.GetDetails <TroopDetails>().KnockBack) { LockedAgent.GetComponent <AlertAbility>().KnockBack = true; } }
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); } }
protected bool IsVisblityCore(CoreBase core) { int layerMask = 1 << LayerMask.NameToLayer("ArtMapModel"); Vector3 unitPos = transform.position; Vector3 corePos = core.transform.position; unitPos.y = unitPos.y + (transform.GetComponent <Collider>().bounds.extents.y / 2); corePos.y = corePos.y + (core.GetComponent <Collider>().bounds.extents.y / 2); //Debug.DrawLine(unitPos, corePos); if (Physics.Linecast(unitPos, corePos, layerMask)) { return(false); } return(true); }
public void Attack() { foreach (Collider2D b in GetComponent <BoxCollider2D>().OverlapAll()) { if (b.tag == GameArgs.Building || b.tag == GameArgs.Troop || b.tag == GameArgs.Shield) { CoreBase agent = b.GetComponent <CoreBase>(); if (agent.Team == TargetTeam) { agent.GetDetails <DetailsBase>().HitPoint -= Damage; if (agent.GetDetails <DetailsBase>().Type == AgentType.Troop && Damage >= agent.GetDetails <TroopDetails>().KnockBack) { agent.GetComponent <AlertAbility>().KnockBack = true; } } } } }
/// <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; } }
public void ChangePanelInfo(int identify) { Debug.Log(identify); GameObject temp = Instantiate(Prefabs.Troop[identify] as GameObject); temp.transform.position = new Vector3(9999999, 9999999, 9999999); CoreBase target = temp.GetComponent <CoreBase>(); Chicken.overrideSprite = target.GetComponent <SpriteRenderer>().sprite; Chicken.SetNativeSize(); //Chicken.transform.localScale = new Vector3(0.5f * target.transform.localScale.x, 0.5f * target.transform.localScale.y, 1); var det = target.GetDetails <TroopDetails>(); Name.text = det.Name; Comment.text = det.Comment; HitPoint.text = det.HitPoint.ToString(); GrowthRate.text = det.GrowthRate.ToString(); Damage.text = det.Damage.ToString(); HitRange.text = det.KnockBack.ToString(); Speed.text = det.Speed.ToString(); KnockBack.text = det.KnockBack.ToString(); Destroy(temp); }