Project_WL/Assets/Script/Character/NPC/BattleNPCActor.cs

82 lines
2.3 KiB
C#

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;
}
}