115 lines
3.5 KiB
C#
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;
|
|
}
|
|
} |