54 lines
1.6 KiB
C#
54 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class Projectile_Suriken : ProjectileBase
|
|
{
|
|
public GameObject go_suriken;
|
|
|
|
List<Transform> list_suriken = new List<Transform>();
|
|
|
|
public override void Set(ProjectileData _data)
|
|
{
|
|
if (list_suriken.Count == 0)
|
|
{
|
|
var count = (int)_data.m_OptionConfigTableData.f_ExtraValue3;
|
|
float angleStep = 360f / count;
|
|
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
var temp = DSUtil.Get_Clone(go_suriken, transform);
|
|
float angle = i * angleStep;
|
|
temp.transform.eulerAngles = new Vector3(-90f, angle, 0f); // 방사형으로 회전 적용
|
|
list_suriken.Add(temp.transform);
|
|
}
|
|
}
|
|
|
|
_data.Speed = _data.m_OptionConfigTableData.f_ExtraValue1;
|
|
_data.LifeTime = _data.m_OptionConfigTableData.f_ExtraValue2;
|
|
base.Set(_data);
|
|
StartCoroutine(Co_Update());
|
|
}
|
|
|
|
IEnumerator Co_Update()
|
|
{
|
|
for (int i = 0; i < list_suriken.Count; i++)
|
|
{
|
|
list_suriken[i].gameObject.SetActive(true);
|
|
list_suriken[i].localPosition = Vector3.zero;
|
|
}
|
|
|
|
while (m_LifeTime > 0f)
|
|
{
|
|
if (DSUtil.CheckNull(m_ProjecTileData.shooter)) break;
|
|
|
|
for (int i = 0; i < list_suriken.Count; i++)
|
|
list_suriken[i].Translate(m_ProjecTileData.Speed * Time.deltaTime * list_suriken[i].forward);
|
|
|
|
m_LifeTime -= Time.deltaTime;
|
|
yield return null;
|
|
}
|
|
|
|
Off();
|
|
}
|
|
} |