// 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>()); } } } }
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); }
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); }
public void ResetBar() { enemyInfoAgent = null; MyTools.SetActive(gameObject, false); }
public void SetEnermy(EnemyInfoAgent enemyInfo) { enemyInfoAgent = enemyInfo; enemyInfoAgent.HPBar = this; ShowBar(); }
public override void OnAwake() { enemyInfoAgent = GetComponent <EnemyInfoAgent>(); }