// Use this for initialization
 void Start()
 {
     enemyInfoAgent  = GetComponent <EnemyInfoAgent>();
     enemyController = GetComponent <NPCController>();
     enemyAnima      = enemyController.m_Animator;
     if (frontAtkTrigger)
     {
         frontAtkTrigger.enabled        = false;
         frontAtkTrigger.gameObject.tag = "EnemyWeapon";
         if (!frontAtkTrigger.isTrigger)
         {
             frontAtkTrigger.isTrigger = true;
         }
     }
     if (backAtkTrigger)
     {
         backAtkTrigger.enabled        = false;
         backAtkTrigger.gameObject.tag = "EnemyWeapon";
         if (!backAtkTrigger.isTrigger)
         {
             backAtkTrigger.isTrigger = true;
         }
     }
     bodyCollider = enemyController.GetComponent <Collider>();
     behaviorTree = GetComponent <BehaviorDesigner.Runtime.BehaviorTree>();
 }
 public void GetEenemys()
 {
     //if (wayPoints == null || wayPoints.Count <= 0) return;
     if (isSpawn)
     {
         return;
     }
     enemyList = new List <EnemyInfoAgent>();
     for (int i = 0; i < maxSpawn; i++)
     {
         GameObject enemy = ObjectPoolManager.Instance.Get(enemyPrafab, wayPoints[Random.Range(0, wayPoints.Count)].transform.position,
                                                           transform.rotation);
         enemy.transform.SetParent(transform, true);
         EnemyInfoAgent enemyInfoAgent = enemy.GetComponent <EnemyInfoAgent>();
         enemyInfoAgent.Relive();
         BehaviorDesigner.Runtime.BehaviorTree btree = enemy.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>();
         btree.SetVariableValue("Player", GameObject.FindWithTag("Player"));
         btree.SetVariableValue("SpawnPoint", gameObject);
         btree.SetVariableValue("ResetPoints", wayPoints);
         btree.SetVariableValue("SpawnRange", spawnRange);
         MyTools.SetActive(enemy, true);
         enemyList.Add(enemyInfoAgent);
     }
     isSpawn = true;
 }
 public void NewHPBar(EnemyInfoAgent enemyInfo)
 {
     if (!enemyInfo)
     {
         return;
     }
     if (HPBars.Count < 0)
     {
         GameObject HPBar = Instantiate(HPBarPrafab, transform) as GameObject;
         HPBar.GetComponent <HPBarAgent>().SetEnermy(enemyInfo);
         HPBars.Add(HPBar.GetComponent <HPBarAgent>());
     }
     else
     {
         if (HPBars.Find(h => h.enemyInfoAgent == enemyInfo))
         {
             return;
         }
         else
         {
             HPBarAgent hbAgent = HPBars.Find(h => !h.enemyInfoAgent);
             if (hbAgent)
             {
                 hbAgent.SetEnermy(enemyInfo);
             }
             else
             {
                 GameObject bar = Instantiate(HPBarPrafab, transform) as GameObject;
                 bar.GetComponent <HPBarAgent>().SetEnermy(enemyInfo);
                 HPBars.Add(bar.GetComponent <HPBarAgent>());
             }
         }
     }
 }
Ejemplo n.º 4
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag == "EnemyWeapon")
     {
         EnemyInfoAgent enemy = other.GetComponentInParent <EnemyInfoAgent>();
         PlayerInfoManager.Instance.BeAttack(enemy, other.GetComponentInParent <EnemySkillsAgent>().currentSkill,
                                             Vector3.Angle(transform.forward, Vector3.ProjectOnPlane(enemy.transform.position - transform.position, Vector3.up).normalized) < 90);
     }
 }
 public void Spawn(EnemyInfoAgent enemy)
 {
     if (!isSpawn)
     {
         GetEenemys();
     }
     enemy.transform.position = wayPoints[Random.Range(0, wayPoints.Count)].transform.position;
     enemy.Relive();
     MyTools.SetActive(enemy.gameObject, true);
 }
 public void SetBossHPBar(EnemyInfoAgent bossInfo)
 {
     if (!bossInfo)
     {
         return;
     }
     boss          = bossInfo;
     bossName.text = bossInfo.Name;
     MyTools.SetActive(BossHPBar, true);
 }
Ejemplo n.º 7
0
 public static int GetDamaged(bool forPlayer, PlayerInfo player, EnemyInfoAgent enemy, SkillInfoAgent skillInfo, out DamageType damageType, out StatuInfo statuInfo, bool hurtForward)
 {
     if (!enemy || !skillInfo)
     {
         Debug.Log(skillInfo);
         damageType = DamageType.Miss;
         statuInfo  = new StatuInfo(Statu.None, 0);
         return(0);
     }
     statuInfo = new StatuInfo(Statu.None, 0);
     if (!forPlayer)
     {
         if (!Probability(80 + player.Hit - enemy.Dodge - player.Level - enemy.Level))
         {
             damageType = DamageType.Miss; return(0);
         }
         damageType = DamageType.Hit;
         float finallyValue = (player.ATK - enemy.DEF * (skillInfo.isCD ? skillInfo.attackMultiple / 100 : (skillInfo.attackMultiple * (1 - skillInfo.subMultiple * 0.01f) / 100)));
         //Debug.Log(skillInfo.attackMultiple * (1 - skillInfo.subMultiple * 0.01f) / 100);
         finallyValue = finallyValue > 1 ? finallyValue : 1;
         if (enemy.IsDown /*|| player.IsFloat*/ || !hurtForward)
         {
             finallyValue *= 2;
             if (!hurtForward)
             {
                 damageType = DamageType.HurtBackward;
             }
         }
         else if (enemy.IsGiddy)
         {
             finallyValue = finallyValue * 1.5f;
         }
         if (Probability((20 + enemy.Crit) < 60 ? (20 + enemy.Crit) : 60))
         {
             finallyValue *= 2; damageType = DamageType.Crit;
         }
         if (enemy.IsBlocking && hurtForward)
         {
             damageType = DamageType.Block;
             enemy.Current_BlockAmount -= System.Convert.ToInt32(finallyValue);
             if (enemy.Current_BlockAmount == 0)
             {
                 damageType = DamageType.BlockBroken;
             }
             return(0);
         }
         if (skillInfo.statuEffcted && skillInfo.isCDWhenUse)
         {
             statuInfo.Statu    = skillInfo.attachStatu;
             statuInfo.Duration = skillInfo.statuDuration;
         }
         if (skillInfo.isCDWhenUse)
         {
             player.Current_HP += skillInfo.recHPWhenHit;
             player.Current_MP += skillInfo.recMPWhenHit;
         }
         return(System.Convert.ToInt32(finallyValue));
     }
     else
     {
         if (!Probability(80 + enemy.Hit - player.Dodge - enemy.Level - player.Level))
         {
             damageType = DamageType.Miss; return(0);
         }
         damageType = DamageType.Hit;
         float finallyValue = (enemy.ATK - player.DEF * (skillInfo.isCD ? skillInfo.attackMultiple / 100 : (skillInfo.attackMultiple * (1 - skillInfo.subMultiple * 0.01f) / 100)));
         finallyValue = finallyValue > 1 ? finallyValue : 1;
         if (player.IsDown /*|| player.IsFloat*/ || !hurtForward)
         {
             finallyValue *= 2;
             if (!hurtForward)
             {
                 damageType = DamageType.HurtBackward;
             }
         }
         else if (player.IsGiddy)
         {
             finallyValue = finallyValue * 1.5f;
         }
         if (Probability((20 + player.Crit) < 60 ? (20 + player.Crit) : 60))
         {
             finallyValue *= 2; damageType = DamageType.Crit;
         }
         if (player.IsBlocking && hurtForward)
         {
             damageType                  = DamageType.Block;
             player.Current_MP          += System.Convert.ToInt32(player.MP * 0.05f);
             player.Current_BlockAmount -= System.Convert.ToInt32(finallyValue);
             if (player.Current_BlockAmount == 0)
             {
                 damageType = DamageType.BlockBroken;
             }
             return(0);
         }
         if (skillInfo.statuEffcted)
         {
             statuInfo.Statu    = skillInfo.attachStatu;
             statuInfo.Duration = skillInfo.statuDuration;
         }
         return(System.Convert.ToInt32(finallyValue));
     }
 }
    public void BeAttack(EnemyInfoAgent enermyInfoAgent, SkillInfoAgent skillInfo, bool hurtForwad)
    {
        if (PlayerInfo == null || !PlayerInfo.IsAlive)
        {
            return;
        }
        DamageType damageType;
        StatuInfo  statuInfo;
        int        damageValue = MyTools.GetDamaged(true, PlayerInfo, enermyInfoAgent, skillInfo, out damageType, out statuInfo, hurtForwad);

        //Debug.Log("Pleyer is hurt:" + damageType + "||" + damageValue);
        PlayerInfo.Current_HP -= damageValue;
        if (statuInfo.Statu != Statu.None)
        {
            if (SetStatu(statuInfo))
            {
                switch (statuInfo.Statu)
                {
                case Statu.Falled:  break;

                case Statu.Giddy:  break;

                case Statu.Rigidity:
                    PlayerLocomotionManager.Instance.playerAnima.speed           = 0;
                    PlayerLocomotionManager.Instance.playerController.moveAble   = false;
                    PlayerLocomotionManager.Instance.playerController.rotateAble = false;
                    break;
                }
                HUDTextManager.Instance.NewStatu(Player.transform, statuInfo.Statu);
            }
        }
        switch (damageType)
        {
        case DamageType.Miss:
            HUDTextManager.Instance.NewMiss(Player.transform);
            PlayerLocomotionManager.Instance.SetPlayerMissAnima(); break;

        case DamageType.HurtBackward:
            HUDTextManager.Instance.NewBackDamageValue(Player.transform, damageValue);
            if (statuInfo.Statu == Statu.None)
            {
                PlayerLocomotionManager.Instance.SetPlayerHurtAnima();
            }
            break;

        case DamageType.BlockBroken:
            HUDTextManager.Instance.NewBlockBroken(Player.transform);
            SetStatu(new StatuInfo(Statu.BlockBroken, 5)); break;

        case DamageType.Block:
            HUDTextManager.Instance.NewBlock(Player.transform); break;

        case DamageType.Crit:
            HUDTextManager.Instance.NewCritDamageValue(Player.transform, damageValue);
            if (statuInfo.Statu == Statu.None)
            {
                PlayerLocomotionManager.Instance.SetPlayerHurtAnima();
            }
            break;

        default:
            HUDTextManager.Instance.NewDamageValue(Player.transform, damageValue);
            if (statuInfo.Statu == Statu.None)
            {
                PlayerLocomotionManager.Instance.SetPlayerHurtAnima();
            }
            break;
        }
        if (PlayerWeaponManager.Instance.currentWeaponTag == string.Empty)
        {
            PlayerInfo.IsFighting = false;
        }
        else
        {
            PlayerInfo.IsFighting = true;
        }
        if (!PlayerInfo.IsAlive)
        {
            MyTools.SetActive(reliveWindow, true);
        }
    }
 public void HideBossHPBar()
 {
     boss           = null;
     goAwayBossTime = 0;
     MyTools.SetActive(BossHPBar, false);
 }
Ejemplo n.º 10
0
 public void ResetBar()
 {
     enemyInfoAgent = null;
     MyTools.SetActive(gameObject, false);
 }
Ejemplo n.º 11
0
 public void SetEnermy(EnemyInfoAgent enemyInfo)
 {
     enemyInfoAgent       = enemyInfo;
     enemyInfoAgent.HPBar = this;
     ShowBar();
 }
 public override void OnAwake()
 {
     enemyInfoAgent = GetComponent <EnemyInfoAgent>();
 }