54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
|
|
using CodeStage.AntiCheat.ObscuredTypes;
|
||
|
|
using System.Collections;
|
||
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
public class Skill_PhantomFrenzy : ProjectileBase
|
||
|
|
{
|
||
|
|
[Header("공격 애니메이션")]
|
||
|
|
public string attackAnimationName = "ass_skill3_attack";
|
||
|
|
[Header("공격 횟수")]
|
||
|
|
public int AttackCount = 7;
|
||
|
|
[Header("공격 거리")]
|
||
|
|
public float AttackDistance = 10f;
|
||
|
|
|
||
|
|
public override void Set(ProjectileData _data)
|
||
|
|
{
|
||
|
|
base.Set(_data);
|
||
|
|
StartCoroutine(Co_Update());
|
||
|
|
}
|
||
|
|
|
||
|
|
IEnumerator Co_Update()
|
||
|
|
{
|
||
|
|
// 이동 비활성화
|
||
|
|
OptionInfo.Ins.PCMove = false;
|
||
|
|
|
||
|
|
var shooter = m_ProjectTileData.shooter;
|
||
|
|
ObscuredInt attackTimes = AttackCount; // 공격 횟수 설정
|
||
|
|
attackTimes.RandomizeCryptoKey();
|
||
|
|
Actor target = m_ProjectTileData.target;
|
||
|
|
|
||
|
|
while (attackTimes > 0)
|
||
|
|
{
|
||
|
|
bool moveCompleted = false;
|
||
|
|
|
||
|
|
// 목표 지점으로 이동 (이동 완료 시 moveCompleted = true)
|
||
|
|
shooter.MoveToTarget(target, 0.5f, () => moveCompleted = true);
|
||
|
|
// 공격 애니메이션 실행
|
||
|
|
shooter.AnimationPlay(attackAnimationName);
|
||
|
|
|
||
|
|
// 이동 완료 대기
|
||
|
|
while (!moveCompleted || shooter.isPlaying()) yield return null;
|
||
|
|
|
||
|
|
// 남은 공격 횟수 감소
|
||
|
|
--attackTimes;
|
||
|
|
attackTimes.RandomizeCryptoKey();
|
||
|
|
target = ActorInfo.Ins.Get_Far_EnemyActor_orNull(shooter.IsEnemy(), shooter.Get_position(), AttackDistance);
|
||
|
|
if (DSUtil.CheckNull(target)) break;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 이동 활성화 및 대기 상태로 전환
|
||
|
|
OptionInfo.Ins.PCMove = true;
|
||
|
|
shooter.Play_Idle();
|
||
|
|
}
|
||
|
|
}
|