using System.Collections; using System.Collections.Generic; using UnityEngine; public class BattleNPCActor : Actor { public int m_ActiveChapter; public bool m_EnemyNPC; Vector3 m_oriPos, m_oriRot; bool IsUpdate; protected override void Awake() { base.Awake(); m_oriPos = transform.position; m_oriRot = transform.eulerAngles; m_Stat = new ActorStatInfo(eRole.BattleNPC, ServerInfo.Ins.m_ServerData, null); m_Enemy = m_EnemyNPC; ActorInfo.Ins.Add_Actor(this, eRole.BattleNPC, 0, name); } protected override void Update() { if (!IsUpdate || IsStop || IsDead() || IsCC()) return; if (m_HitTime > 0f) { m_HitTime -= Time.deltaTime; return; } base.Update(); if (!isTarget || m_Target.IsDead()) FindNextTarget(); if (!isTarget) return; m_attackCoolTime -= Time.deltaTime; var dist = Vector3.Distance(Get_position(), m_Target.Get_position()); if (CurAnim < eAnim.Attack && dist > m_NavMeshAgent.stoppingDistance) { Play_Run(); Set_Path(m_Target.Get_position()); } else if (CurAnim != eAnim.Attack && m_attackCoolTime > 0f) Play_Idle(); else Play_Attack(0, (float)m_Stat.Get_Stat(eStat.FinalAttackSpeed)); } void FindNextTarget() { m_Target = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(IsEnemy(), Get_position()); } public override void Set(bool isEnemy, Actor owner, ServerData sdata, int _id, bool _stop, bool _ui = false) { base.Set(isEnemy, owner, sdata, _id, _stop, _ui); if (IsStop) { //var mobstat = table_monsterstat.Ins.Get_Data(1, InGameInfo.Ins.Get_CurStageData().Chapter, 6, 0); //m_Stat.Set_Stat(eStat.Attack, 1); //m_Stat.Set_Stat(true, eStat.Attack, mobstat.list_HP[0] * 0.2d); //m_Stat.MaxHP = mobstat.list_Attack[0] * 200d; //m_Stat.Set_Stat(true, eStat.HP, m_Stat.MaxHP); //Set_Warp(m_oriPos); //transform.eulerAngles = m_oriRot; } } public bool IsActiveNPC() { //IsUpdate = m_ActiveChapter == InGameInfo.Ins.Get_CurStageData().Chapter; return IsUpdate; } }