コード例 #1
0
 /// <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;
     }
 }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
    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);
    }
コード例 #4
0
 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;
                 }
             }
         }
     }
 }
コード例 #5
0
 /// <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;
     }
 }
コード例 #6
0
    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);
    }