136 lines
4.9 KiB
C#
136 lines
4.9 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
public class Boss_IceGolem : BossMobActor
|
|
{
|
|
[Header("스킬1 쿨타임")]
|
|
public float Skill1CoolTime = 8f;
|
|
[Header("스킬1 타겟 위치와의 거리")]
|
|
public float Skill1TargetRange = 2f;
|
|
[Header("스킬1 달려가는 속도")]
|
|
public float Skill1Speed = 5f;
|
|
[Header("스킬1 데미지")]
|
|
public float Skill1Dmg = 3.5f;
|
|
[Header("스킬1 스턴 시간")]
|
|
public float Skill1StunTime = 2f;
|
|
[Header("스킬1 인디케이터")]
|
|
public string Skill1Indicator = "IceGolem_Skill1_Indicator";
|
|
[Header("---------------------------------------")]
|
|
public bool Perforation_Line;
|
|
[Header("스킬2 쿨타임")]
|
|
public float Skill2CoolTime = 10f;
|
|
[Header("스킬2 달려가는 속도")]
|
|
public float Skill2Speed = 7f;
|
|
[Header("스킬2 데미지")]
|
|
public float Skill2Dmg = 3.5f;
|
|
[Header("스킬2 넉백 시간")]
|
|
public float Skill2KnockBackTime = 0.3f;
|
|
[Header("스킬2 스턴 시간")]
|
|
public float Skill2StunTime = 1f;
|
|
[Header("스킬2 인디케이터")]
|
|
public string Skill2Indicator = "IceGolem_Skill2_Indicator";
|
|
|
|
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);
|
|
Load_Indicator(Skill1Indicator, 0);
|
|
Load_Indicator(Skill2Indicator, 1);
|
|
|
|
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 (isTarget)
|
|
{
|
|
if (UseSkillIndex == 1 && MobStatus != eMobStatus.Skill)
|
|
{
|
|
Run_byUseSkill(Skill1TargetRange, Skill1Speed, success =>
|
|
{
|
|
AnimationPlay("boss_skill1start");
|
|
dic_indicator[0].transform.position = Get_position();
|
|
dic_indicator[0].SetActive(true);
|
|
Jump(1.0f, 3f, 2f, 5f, () =>
|
|
{
|
|
dic_indicator[0].SetActive(false);
|
|
Init(true, false);
|
|
AnimationPlay("boss_skill1attack");
|
|
});
|
|
});
|
|
}
|
|
else if (UseSkillIndex == 2 && MobStatus != eMobStatus.Skill)
|
|
StartCoroutine(Co_Skill2());
|
|
}
|
|
}
|
|
|
|
IEnumerator Co_Skill2()
|
|
{
|
|
Change_MobStatus(eMobStatus.Skill);
|
|
AnimationPlay("boss_skill2start");
|
|
dic_indicator[1].SetActive(true);
|
|
dic_indicator[1].transform.position = Get_position();
|
|
if (isTarget) dic_indicator[1].transform.LookAt(m_Target.transform);
|
|
|
|
var chargingTime = 3f;
|
|
InGameInfo.Ins.Show_Effect("Effect_IceGolem_Skill2Charging", this, eEffectLocation.Bottom, chargingTime);
|
|
float t = 0f;
|
|
while (t < chargingTime)
|
|
{
|
|
yield return null;
|
|
t += Time.deltaTime;
|
|
if (isTarget)
|
|
{
|
|
transform.LookAt(m_Target.transform);
|
|
dic_indicator[1].transform.LookAt(m_Target.transform);
|
|
}
|
|
else break;
|
|
}
|
|
dic_indicator[1].SetActive(false);
|
|
|
|
if (isTarget)
|
|
{
|
|
InGameInfo.Ins.Show_Effect("Effect_IceGolem_Skill2Dash", this, eEffectLocation.Mid, 5f, effect =>
|
|
{ effect.transform.eulerAngles = transform.eulerAngles; });
|
|
AnimationPlay("boss_skill2runattack");
|
|
transform.LookAt(m_Target.transform);
|
|
m_NavMeshAgent.stoppingDistance = 0.1f;
|
|
Set_Path(Get_PositionFoward_OnNavMesh(18f)); // IceGolem_Skill2_Indicator 길이
|
|
while (!Complete_Destination())
|
|
{
|
|
m_NavMeshAgent.speed = Skill2Speed;
|
|
yield return null;
|
|
}
|
|
m_NavMeshAgent.stoppingDistance = m_NavStopDistance;
|
|
m_NavMeshAgent.speed = Get_MoveSpeed();
|
|
}
|
|
|
|
Init(false, true);
|
|
}
|
|
|
|
protected override float Get_Skill1Dmg() { return Skill1Dmg; }
|
|
protected override Vector3 Get_Skill1Pos() { return Get_Center_position(); }
|
|
protected override void Set_Skill1Projectile(ProjectileBase pb)
|
|
{
|
|
var pd = pb.Get_ProjectTileData();
|
|
pd.Set_SkillExtra_MakeSkillListTableData(eSkillExtraType.Stun, Skill1StunTime);
|
|
}
|
|
|
|
protected override float Get_Skill2Dmg() { return Skill2Dmg; }
|
|
protected override Vector3 Get_Skill2Pos() { return Get_position(); }
|
|
protected override void Set_Skill2Projectile(ProjectileBase pb)
|
|
{
|
|
var pd = pb.Get_ProjectTileData();
|
|
pd.Set_SkillExtra_MakeSkillListTableData(eSkillExtraType.KnockBack_byHitter, Skill2KnockBackTime, Skill2StunTime);
|
|
}
|
|
} |