2025-05-18 01:04:31 +08:00

141 lines
2.8 KiB
C#

// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "Ef_splash" company="Kimch"></copyright>
// <summary></summary>
// ***********************************************************************
using UnityEngine;
namespace G
{
/// <summary>
///
/// </summary>
public class Ef_splash : MonoBehaviour
{
public Transform rising_fire;
private Transform _cha1;
private Collider _collider;
private Renderer _renderer;
private float _showTime = 1.5f;
private float _distance;
private Color _originTintcolor;
private bool _collidsionOn;
private bool _showOn;
private void Awake()
{
_collider = this.GetComponent<Collider>();
_renderer = this.transform.Find("Quad").GetComponent<Renderer>();
}
private void Start()
{
_cha1 = EntityMainPlayer.Instance.transform;
_renderer.enabled = false;
_collider.enabled = false;
rising_fire.gameObject.SetActive(false);
_originTintcolor = _renderer.material.GetTintColor();
this.gameObject.SetActive(false);
}
public void SetType(int type)
{
if (type == 3)
{
rising_fire.gameObject.SetActive(false);
}
else
{
rising_fire.gameObject.SetActive(true);
}
}
public void SplashOn(bool col, float distance, float delay)
{
_collidsionOn = col;
_showTime = 1.5f;
_renderer.material.SetTintColor(_originTintcolor);
_distance = distance;
Invoke(nameof(ShowOn), delay);
}
public void SplashOff()
{
if (_collider.enabled)
{
_collider.enabled = false;
}
this.gameObject.SetActive(false);
CancelInvoke(nameof(ShowOn));
}
public void ShowOn()
{
this.gameObject.SetActive(true);
this.transform.SetPositionAndRotation(_cha1.TransformPoint(new Vector3(0f, 0.02f, _distance)), _cha1.rotation);
rising_fire.gameObject.SetActive(true);
_renderer.enabled = true;
if (_collidsionOn)
{
_collider.enabled = true;
}
_showOn = true;
}
private void Update()
{
if (!_showOn)
{
return;
}
_showTime -= Time.deltaTime;
if (_showTime > 1.2f)
{
return;
}
else if (_showTime > 0.5f)
{
if (_collider.enabled)
{
_collider.enabled = false;
}
}
else if (_showTime > 0f)
{
if (_collider.enabled)
{
_collider.enabled = false;
}
var tintColor = _renderer.material.GetTintColor();
var transColor = Color.Lerp(tintColor, Color.clear, Time.deltaTime * 14f);
_renderer.material.SetTintColor(transColor);
}
else
{
this.gameObject.SetActive(false);
this.transform.position = Vector3.up * 100f;
}
}
}
}