201 lines
5.9 KiB
C#
201 lines
5.9 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
/// <summary>
|
|
/// 车皮肤
|
|
/// </summary>
|
|
public class SkinCar : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 惊险超车射线
|
|
/// </summary>
|
|
[HideInInspector] public Transform judgmentOvertakingRay;
|
|
|
|
/// <summary>
|
|
/// 左前转向灯
|
|
/// </summary>
|
|
[HideInInspector] public GameObject leftFrontIndicator;
|
|
|
|
/// <summary>
|
|
/// 右前转向灯
|
|
/// </summary>
|
|
[HideInInspector] public GameObject rightFrontIndicator;
|
|
|
|
/// <summary>
|
|
/// 左后转向灯
|
|
/// </summary>
|
|
[HideInInspector] public GameObject leftQueenIndicator;
|
|
|
|
/// <summary>
|
|
/// 右后转向灯
|
|
/// </summary>
|
|
[HideInInspector] public GameObject rightQueenIndicator;
|
|
|
|
/// <summary>
|
|
/// 右轮
|
|
/// </summary>
|
|
[HideInInspector] public GameObject rightWheel;
|
|
|
|
/// <summary>
|
|
/// 大小类型
|
|
/// </summary>
|
|
[HideInInspector]public E_CarSizeType carSizeType;
|
|
|
|
/// <summary>
|
|
/// 闪烁协程
|
|
/// </summary>
|
|
private Coroutine flashingCoroutine;
|
|
|
|
private void Awake()
|
|
{
|
|
leftQueenIndicator = transform.Find("LeftQueenIndicator").gameObject;
|
|
rightQueenIndicator = transform.Find("RightQueenIndicator").gameObject;
|
|
leftFrontIndicator = transform.Find("LeftFrontIndicator").gameObject;
|
|
rightFrontIndicator = transform.Find("RightFrontIndicator").gameObject;
|
|
rightWheel = transform.Find("Wheels/Meshes/FrontRightWheel").gameObject;
|
|
judgmentOvertakingRay = transform.Find("JudgmentOvertakingRay").transform;
|
|
SetAllLight(false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭灯
|
|
/// </summary>
|
|
public void SetAllLight(bool isTrue)
|
|
{
|
|
leftQueenIndicator.gameObject.SetActive(isTrue);
|
|
rightQueenIndicator.gameObject.SetActive(isTrue);
|
|
leftFrontIndicator.gameObject.SetActive(isTrue);
|
|
rightFrontIndicator.gameObject.SetActive(isTrue);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开前灯
|
|
/// </summary>
|
|
public void OpenFrontLight()
|
|
{
|
|
leftFrontIndicator.gameObject.SetActive(true);
|
|
rightFrontIndicator.gameObject.SetActive(true);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 停止闪烁
|
|
/// </summary>
|
|
public void StopFlashing()
|
|
{
|
|
if(flashingCoroutine!=null)
|
|
{
|
|
StopCoroutine(flashingCoroutine);
|
|
MeshRenderer[] meshRenderers = GetComponentsInChildren<MeshRenderer>();
|
|
for (int j = 0; j < meshRenderers.Length; j++)
|
|
{
|
|
meshRenderers[j].material = YooAssetManager.Instance.LoadAssetSync<Material>(PackagesName.GameData, "ColorVar1_Material");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 车身透明
|
|
/// </summary>
|
|
public void BodyTransparency()
|
|
{
|
|
MeshRenderer[] meshRenderer = GetComponentsInChildren<MeshRenderer>();
|
|
for (int i = 0; i < meshRenderer.Length; i++)
|
|
{
|
|
meshRenderer[i].material = YooAssetManager.Instance.LoadAssetSync<Material>(PackagesName.GameData, "ghost");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 车身恢复
|
|
/// </summary>
|
|
public void BodyRecovery()
|
|
{
|
|
MeshRenderer[] meshRenderer = GetComponentsInChildren<MeshRenderer>();
|
|
for (int i = 0; i < meshRenderer.Length; i++)
|
|
{
|
|
meshRenderer[i].material = YooAssetManager.Instance.LoadAssetSync<Material>(PackagesName.GameData, "ColorVar1_Material");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 闪烁
|
|
/// </summary>
|
|
public void Flashing(string materialName,UnityAction unityAction)
|
|
{
|
|
flashingCoroutine=StartCoroutine(IE_Flashing(materialName,unityAction));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 闪烁协程
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private IEnumerator IE_Flashing(string materialName, UnityAction callBack)
|
|
{
|
|
UIManager.Instance.GetUI<GameUI>().SetShimmerCountDownSetActive(true);
|
|
MeshRenderer[] meshRenderers = GetComponentsInChildren<MeshRenderer>();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
for (int j = 0; j < meshRenderers.Length; j++)
|
|
{
|
|
meshRenderers[j].material = YooAssetManager.Instance.LoadAssetSync<Material>(PackagesName.GameData, materialName);
|
|
}
|
|
yield return new WaitForSeconds(0.2f);
|
|
for (int j = 0; j < meshRenderers.Length; j++)
|
|
{
|
|
meshRenderers[j].material = YooAssetManager.Instance.LoadAssetSync<Material>(PackagesName.GameData, "ColorVar1_Material");
|
|
}
|
|
yield return new WaitForSeconds(0.2f);
|
|
}
|
|
callBack?.Invoke();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 使用闪灯
|
|
/// </summary>
|
|
public void USE()
|
|
{
|
|
StartCoroutine(IE_USE());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 使用车协程
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private IEnumerator IE_USE()
|
|
{
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
leftFrontIndicator.gameObject.SetActive(false);
|
|
rightFrontIndicator.gameObject.SetActive(false);
|
|
yield return new WaitForSeconds(0.1f);
|
|
leftFrontIndicator.gameObject.SetActive(true);
|
|
rightFrontIndicator.gameObject.SetActive(true);
|
|
yield return new WaitForSeconds(0.1f);
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (leftQueenIndicator != null)
|
|
{
|
|
leftQueenIndicator.gameObject.SetActive(false);
|
|
}
|
|
if (rightQueenIndicator != null)
|
|
{
|
|
rightQueenIndicator.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 右轮旋转
|
|
/// </summary>
|
|
public void RightWheelSpin()
|
|
{
|
|
if (Scenes.Instance.e_GameState == E_GameState.GameVictory)
|
|
{
|
|
rightWheel.transform.Rotate(Vector3.right * 800 * Time.deltaTime);
|
|
}
|
|
}
|
|
}
|