OneShotOneKill/Assets/Script/InGame/Actor/MobShields.cs

53 lines
1.6 KiB
C#
Raw Normal View History

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;
}
2026-01-15 02:03:26 +00:00
shield.Set(index++ < crash, GetComponentInParent<MobActor>());
}
}
private void Update()
{
if (shieldType == eShieldType.Rotation)
transform.Rotate(0f, 0f, rotateSpeed * Time.deltaTime);
}
}