118 lines
2.4 KiB
C#
Raw Normal View History

2025-05-18 01:04:31 +08:00
using UnityEngine;
namespace G
{
public class RandomItem : MonoBehaviour
{
public Transform[] fxs;
public Transform[] fxs_b;
public float m_spaceTime;
public int m_hpVal = 10;
public int m_spVal = 30;
private int m_curIdx = -1;
private Transform[] m_fxs = new Transform[4];
private SphereCollider m_collider;
private void Awake()
{
m_collider = GetComponent<SphereCollider>();
for (int i = 0; i < fxs.Length; i++)
{
m_fxs[i] = (Object.Instantiate(fxs[i], this.transform.position, Quaternion.identity, this.transform) as Transform);
m_fxs[i].localPosition = new Vector3(0f, 0.01f, 0f);
m_fxs[i].gameObject.SetActive(false);
}
m_curIdx = -1;
RandItem_CB();
m_collider.enabled = false;
//SetFxActive(m_curIdx);
//InvokeRepeating(nameof(RandItem_CB), 1.5f, 1.5f);
Invoke(nameof(SetCollider), 1f);
}
private void OnDestroy()
{
for (int i = 0; i < fxs.Length; i++)
{
Object.Destroy(m_fxs[i].gameObject);
}
}
private void SetCollider()
{
m_collider.enabled = true;
}
private void RandItem_CB()
{
if (m_curIdx == 3)
{
m_curIdx = -1;
}
m_curIdx++;
m_curIdx = Random.Range(0, 4);
SetFxActive(m_curIdx);
}
private void SetFxActive(int idx)
{
for (int i = 0; i < m_fxs.Length; i++)
{
m_fxs[i].gameObject.SetActive(false);
}
m_fxs[idx].gameObject.SetActive(true);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.layer != GameLayer.AllyLayer)
{
return;
}
m_collider.enabled = false;
Vector3 pos = default(Vector3);
//pos = component.GetCurPos();
//pos.y = component.GetModHeight();
string prefabName = string.Empty;
switch (m_curIdx)
{
case 0:
{
prefabName = "green";
GameLevel.Instance.AddBuff(prefabName, GlobalVar.BuffAddition);
break;
}
case 1:
{
prefabName = "red";
GameLevel.Instance.AddBuff(prefabName, GlobalVar.BuffAddition);
break;
}
case 2:
{
prefabName = "yellow";
GameLevel.Instance.AddBuff(prefabName, GlobalVar.BuffAddition);
break;
}
case 3:
{
prefabName = "blue";
GameLevel.Instance.AddBuff(prefabName, GlobalVar.BuffAddition);
break;
}
}
var fx = Object.Instantiate(fxs_b[m_curIdx], this.transform.position, Quaternion.identity);
Destroy(fx.gameObject, 1f);
Object.Destroy(this.gameObject);
}
}
}