108 lines
2.4 KiB
C#
Raw Normal View History

2025-05-18 01:04:31 +08:00
// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "Ef_fixed" company="Kimch"></copyright>
// <summary></summary>
// ***********************************************************************
using UnityEngine;
namespace G
{
/// <summary>
///
/// </summary>
public class Ef_fixed : Ef_base
{
public float m_spaceTrigger;
public bool m_followMe;
private ParticleSystem m_emitter;
#pragma warning disable CS0414 // 字段“Ef_fixed.m_spaceCount”已被赋值但从未使用过它的值
private float m_spaceCount;
#pragma warning restore CS0414 // 字段“Ef_fixed.m_spaceCount”已被赋值但从未使用过它的值
private bool m_onlyOne;
private new void Awake()
{
base.Awake();
m_transform = base.transform;
m_collider = base.GetComponent<Collider>();
m_emitter = base.gameObject.GetComponentInChildren<ParticleSystem>();
}
private void Start()
{
}
private void OnEnable()
{
if ((bool)m_emitter)
{
m_emitter.Play();
}
m_spaceCount = 0f;
m_delay = 0f;
m_localScale = m_transform.localScale;
SetCollider(false);
m_onlyOne = false;
if (m_spaceTrigger > 0f)
{
InvokeRepeating(nameof(SetSpaceCollider_CB), m_startTrigger, m_spaceTrigger);
InvokeRepeating(nameof(SetSpaceCollider2_CB), m_startTrigger + 0.05f, m_spaceTrigger + 0.05f);
}
}
private void OnDisable()
{
CancelInvoke(nameof(SetSpaceCollider_CB));
}
private void Update()
{
m_delay += Time.deltaTime;
if (m_followMe)
{
Ef_base.GetPosByType(m_transform, base.m_user, m_posType, m_rotationWithTarget);
}
m_transform.localScale = m_localScale;
if (m_endDelay != -1f && m_delay >= m_endDelay)
{
Destroy(base.gameObject);
}
else if (m_delay >= m_endTrigger && m_endTrigger != -1f)
{
SetCollider(false);
}
else if (m_spaceTrigger == 0f && m_collider && m_delay >= m_startTrigger && !m_onlyOne)
{
SetCollider(true);
m_onlyOne = true;
}
}
private void SetSpaceCollider_CB()
{
if (m_collider)
{
SetCollider(true);
}
}
private void SetSpaceCollider2_CB()
{
if (m_collider)
{
SetCollider(false);
}
}
}
}