Project_WL/Assets/Script/Character/Mob/BossMobActor.cs

85 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BossMobActor : MobActor
{
public List<GameObject> list_indicator;
int m_attackIndex = 0, m_maxAttackIndex;
float m_attackspeed;
protected override void Awake()
{
base.Awake();
Init();
}
void Init()
{
list_indicator.ForEach(f => f.SetActive(false));
}
public override void Del_Target(bool forcedel = false)
{
base.Del_Target(forcedel);
if (!isTarget) Init();
}
public override void Play_Attack(int _attack, float _as)
{
if (m_maxAttackIndex == 0) m_maxAttackIndex = m_MonsterTableData.Get_MaxAttackIndex();
if (isPlaying(eAnim.Attack, eAnim.Attack2, eAnim.Attack3)) return;
if (isTarget) transform.LookAt(m_Target.transform);
CurAnim = eAnim.Attack + m_attackIndex;
var aniname = MyValue.Get_AnimName(eAnim.Attack + m_attackIndex);
AnimationPlay(aniname);
m_attackspeed = _as;
m_animation.speed = 0.1f; // 느리게 만들자
}
public override void Indicator(int a)
{
base.Indicator(a);
var index = 0;
if (isPlaying(eAnim.Attack2)) index = 1;
else if (isPlaying(eAnim.Attack3)) index = 2;
list_indicator[index].SetActive(a == 0);
if (a == 1)
{ // 데미지 투사체 생성
m_animation.speed = m_attackspeed;
var startpos = Get_CenterPositionFoward();
if (ProjectileInfo.ProjectileInfoOn)
{
if (index == 0)
ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile1, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime1);
else if (index == 1)
ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile2, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime2);
else
ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile3, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime3);
}
Set_Coroutine_withCancel(() =>
{
Change_MobStatus(eMobStatus.PatrolWait);
++m_attackIndex;
if (m_attackIndex >= m_maxAttackIndex) m_attackIndex = 0;
}, 0.95f - m_animation.GetCurrentAnimatorStateInfo(0).normalizedTime);
}
}
protected override void Set_Die()
{
base.Set_Die();
Init();
}
protected override void On_NavMeshAgent()
{
base.On_NavMeshAgent();
Init();
}
}