Project_WL/Assets/Script/Character/Mob/Boss/Boss_Anubis.cs

115 lines
3.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Boss_Anubis : BossMobActor
{
[Header("스킬1 쿨타임")]
public float Skill1CoolTime = 18f;
[Header("스킬1 칼날 폭풍 데미지")]
public float Skill1Dmg = 2.2f;
[Header("스킬1 차징 시간")]
public float Skill1ChargingTime = 3f;
[Header("---------------------------------------")]
public bool Perforation_Line;
[Header("스킬2 쿨타임")]
public float Skill2CoolTime = 15f;
[Header("스킬2 차징시간")]
public float Skill2ChargingTime = 3f;
[Header("스킬2 공격 딜레이 시간")]
public float Skill2AttackDelay = 1f;
[Header("스킬2 데미지")]
public float Skill2Dmg = 2.8f;
[Header("스킬2 투사체 갯수")]
public int Skill2Count = 6;
[Header("스킬2 투사체 속도")]
public float Skill2Speed = 15f;
public override void Set(MonsterTableData mobtable, Vector3 pos, Action<int> actDie, int order)
{
base.Set(mobtable, pos, actDie, order);
CoolTime_Skill1 = 1f;
CoolTime_Skill2 = 2f;
}
protected override void Init(bool initSkill1CoolTime, bool initSkill2CoolTime)
{
base.Init(initSkill1CoolTime, initSkill2CoolTime);
if (initSkill1CoolTime) CoolTime_Skill1 = Skill1CoolTime;
if (initSkill2CoolTime) CoolTime_Skill2 = Skill2CoolTime;
}
protected override void Update()
{
base.Update();
if (IsDead() || IsStop) return;
if (UseSkillIndex == 1 && MobStatus != eMobStatus.Skill)
StartCoroutine(Co_Skill1());
else if (UseSkillIndex == 2 && MobStatus != eMobStatus.Skill)
StartCoroutine(Co_Skill2());
}
IEnumerator Co_Skill1()
{
Change_MobStatus(eMobStatus.Skill);
AnimationPlay("boss_skill1charging");
InGameInfo.Ins.Show_Effect("Effect_AnubisCharging", this, eEffectLocation.Bottom, Skill1ChargingTime);
// 차징 중
yield return new WaitForSeconds(Skill1ChargingTime);
// 모습 끄기
Model_OnOff(false);
AnimationPlay("boss_skill1attack");
m_NavMeshAgent.stoppingDistance = 0.2f;
float t = m_MonsterTableData.f_ProjectileLifeTime2;
while (t > 0f)
{
yield return null;
t -= Time.deltaTime;
if (isTarget)
{
Set_Path(m_Target.Get_position());
if (m_Target.IsDead()) break;
}
if (!isTarget || IsDead())
break;
}
Model_OnOff(true);
m_NavMeshAgent.stoppingDistance = m_NavStopDistance;
Check_Battle();
Init(true, false);
}
IEnumerator Co_Skill2()
{
Change_MobStatus(eMobStatus.Skill);
AnimationPlay("boss_skill2charging");
InGameInfo.Ins.Show_Effect("Effect_AnubisCharging2", this, eEffectLocation.Bottom, Skill2ChargingTime);
// 차징 중
yield return new WaitForSeconds(Skill2ChargingTime);
for (int i = 0; i < Skill2Count; i++)
{
if (isTarget) transform.LookAt(m_Target.transform);
else break;
AnimationPlay("boss_skill2attack");
yield return new WaitForSeconds(Skill2AttackDelay);
}
Check_Battle();
Init(false, true);
}
protected override float Get_Skill2Dmg() { return Skill2Dmg; }
protected override void Set_Skill2Projectile(ProjectileBase pb)
{
var pd = pb.Get_ProjectTileData();
pd.Speed = Skill2Speed;
}
}