53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
public class MobShields : MonoBehaviour
|
|
{
|
|
eShieldType shieldType;
|
|
public float rotateSpeed = 180f; // 초당 회전 각도
|
|
|
|
public void Set(MonsterTableData data)
|
|
{
|
|
transform.localEulerAngles = Vector3.zero;
|
|
shieldType = data.e_ShieldType;
|
|
|
|
switch (data.e_ShieldType)
|
|
{
|
|
case eShieldType.None:
|
|
gameObject.SetActive(false);
|
|
break;
|
|
case eShieldType.Static:
|
|
case eShieldType.Rotation:
|
|
Make_Shield(data);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Make_Shield(MonsterTableData data)
|
|
{
|
|
gameObject.SetActive(true);
|
|
|
|
int crash = data.n_NormalShieldCount;
|
|
int noncrash = data.n_InvinityShieldCount;
|
|
|
|
int index = 0;
|
|
while (index < crash + noncrash)
|
|
{
|
|
var shield = DSUtil.Get_Clone<MobShield>("Mob/MobShield", transform, Vector3.one * 10000f);
|
|
switch (index)
|
|
{
|
|
case 0: shield.transform.localPosition = Vector3.down * 2.5f; break;
|
|
case 1: shield.transform.localPosition = Vector3.up * 2.5f; break;
|
|
case 2: shield.transform.localPosition = Vector3.right * 2.5f; break;
|
|
case 3: shield.transform.localPosition = Vector3.left * 2.5f; break;
|
|
}
|
|
|
|
shield.Set(index++ < crash, GetComponentInParent<MobActor>());
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (shieldType == eShieldType.Rotation)
|
|
transform.Rotate(0f, 0f, rotateSpeed * Time.deltaTime);
|
|
}
|
|
} |