Buenas, tengo un código que hace que cuando dispare al enemigo se ponga de color blanco progresivamente, pero yo realmente lo que quiero es que que el enemigo se ponga blanco y a la vez se vuelva negro (como su color base) pero de igual manera, progresivamente.
Este efecto lo quiero para hacer un estilo de efecto de hitmarker y de momento tengo este código (he limpiado otros códigos para que se vea mas limpio todo).
Este código hace eso.. le das a un enemigo, se pone blanco progresivo.. hasta ahí bien, pero se queda blanco!! y eso, me gustaría que una vez se pusiera blanco saltase otro código que sin tiempo de espera se empiece a poner negro.. vamos que en cosa de 1 segundo (por ejemplo) haya pasado de blanco a negro recordando que el negro es el color base.
Llevo muchas horas probando códigos y no consigo nada de nada.. Gracias de antemano!
Este efecto lo quiero para hacer un estilo de efecto de hitmarker y de momento tengo este código (he limpiado otros códigos para que se vea mas limpio todo).
Este código hace eso.. le das a un enemigo, se pone blanco progresivo.. hasta ahí bien, pero se queda blanco!! y eso, me gustaría que una vez se pusiera blanco saltase otro código que sin tiempo de espera se empiece a poner negro.. vamos que en cosa de 1 segundo (por ejemplo) haya pasado de blanco a negro recordando que el negro es el color base.
Llevo muchas horas probando códigos y no consigo nada de nada.. Gracias de antemano!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BlockController : MonoBehaviour {
public Renderer rend;
Color[] colors;
float transitionTime = 0.01f;
float duration = 0.5f;
void Start()
{
rend = GetComponent<Renderer>();
currentHealth = health;
colors = new Color[3];
colors[0] = Color.black;
colors[1] = Color.white;
colors[2] = Color.red;
}
IEnumerator ColorChange()
{
while (true)
{
Color newColor = colors[1];
float transitionRate = 0;
while (transitionRate < 100000)
{
rend.material.SetColor("_Color", Color.Lerp(rend.material.color, newColor, Time.deltaTime * transitionRate));
transitionRate += Time.deltaTime / transitionTime;
yield return null;
}
yield return null;
}
}
void Update()
{
}
public void HurtEnemy(int damage)
{
StartCoroutine(ColorChange());
}
}