Как сделать чтобы при попадании в триггер объект затухал?
Зеленый квадрат - игрок,
белый - триггер, который затухает/расцветает.
Замечания:
- на триггере стоит Transperent Shader
- на герое стоит Rigidbody + isKinematic
- на обоих Collider.isTrigger = true
- закомментирован код для использования с твинером LeanTween
using UnityEngine;
using System;
using System.Collections;
public class TestFade : MonoBehaviour
{
public enum PaperState : int
{
On = 0,
FadeOut = 1,
Off = 2,
FadeIn = 3
}
public PaperState state = PaperState.On;
public int insideCount = 0;
public GameObject myGameObject;
public Renderer myRenderer;
void OnTriggerEnter(Collider other)
{
insideCount++;
if (state == PaperState.On)
{
FadeOut();
}
}
void OnTriggerExit(Collider other)
{
insideCount--;
if (insideCount == 0 && state != PaperState.On)
{
FadeIn();
}
}
void FadeOut()
{
state = PaperState.FadeOut;
StartCoroutine(CorFadeOut(myRenderer, new Color(1f, 1f, 1f, 0f), 0.5f, WhenFadeOutEnd));
//LeanTween.color(myGameObject, new Color(1f, 1f, 1f, 0f), 0.5f)
// .setOnComplete(WhenFadeOutEnd);
}
void WhenFadeOutEnd()
{
state = PaperState.Off;
}
void FadeIn()
{
state = PaperState.FadeIn;
StartCoroutine(CorFadeOut(myRenderer, new Color(1f, 1f, 1f, 1f), 0.5f, WhenFadeInEnd));
//LeanTween.color(myGameObject, new Color(1f, 1f, 1f, 1f), 0.5f)
// .setOnComplete(WhenFadeInEnd);
}
void WhenFadeInEnd()
{
state = PaperState.On;
}
IEnumerator CorFadeOut(Renderer r, Color color, float time, Action onComplete)
{
float curTime = 0f;
Color startColor = r.material.color;
while (curTime < time)
{
r.material.color = Color.Lerp(startColor, color, curTime / time);
curTime += Time.deltaTime;
yield return null;
}
if (onComplete != null)
onComplete();
}
IEnumerator CorFadeIn(Renderer r, Color color, float time, Action onComplete)
{
float curTime = 0f;
Color startColor = r.material.color;
while (curTime < time)
{
r.material.color = Color.Lerp(startColor, color, curTime / time);
curTime += Time.deltaTime;
yield return null;
}
if (onComplete != null)
onComplete();
}
}
Комментарии
Отправить комментарий