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(); 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); } } }