Project_WL/Assets/Script/Character/Projectile/Skill/Skill_Frozen.cs

54 lines
1.9 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using System.Collections;
using UnityEngine;
public class Skill_Frozen : ProjectileBase
{
public GameObject[] gos; // 0 날아가는 거, 1 터지는 거
[Header("날아가는 속도")]
public float speed = 4f;
[Header("얼리는 범위")]
public Vector3 v3_freezescale = Vector3.one * 1.5f;
SkillListTableData awaken3_skilldata = new SkillListTableData();
public override void Set(ProjectileData _data)
{
_data.eStartPos = eProjectileStartPos.ShooterCenter;
base.Set(_data);
gos[1].transform.localScale = v3_freezescale + (v3_freezescale * (IsStep(1) ? Get_AwakenData(1, 1) : 0f));
_data.CC_AddTime = IsStep(2) ? Get_AwakenData(2, 1) : 0;
awaken3_skilldata.e_SkillExtraType = eSkillExtraType.Frost;
awaken3_skilldata.f_ExtraValue1 = Get_AwakenData(3, 1);
awaken3_skilldata.f_ExtraValue2 = Get_AwakenData(3, 2);
awaken3_skilldata.f_ExtraValue3 = Get_AwakenData(3, 3);
awaken3_skilldata.f_ExtraValue4 = 1f;
act_afterFreezing = IsStep(3) ? hitter =>
{
var copydinfo = Get_DamageInfo();
copydinfo.Set_Extra(eSkillExtraType.Frost);
copydinfo.Beater_pd.m_SkillListTableData = awaken3_skilldata;
hitter.Check_Extra(copydinfo);
} : null;
StartCoroutine(Co_Update());
}
IEnumerator Co_Update()
{
DSUtil.InActivateGameObjects(gos, 0);
while (true)
{
var targetPos = m_ProjectTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetPos, Time.deltaTime * speed);
if (Vector3.Distance(transform.position, targetPos) < 0.2f)
break;
yield return null;
}
DSUtil.InActivateGameObjects(gos, 1);
gos[1].transform.position = m_ProjectTileData.target.Get_position();
yield return new WaitForSeconds(1f);
Off(true);
}
}