Hola de nuevo
Estoy tratando de lograr que un objeto pase de negra a blanco, de forma paulatina... como un fundido
e probado usando Color.Lerp, pero no se si no se usarlo o que... asta ahora no me habia puesto a jugar con los colores por script, así que ignoro bastante sobre el tema.
¿Alguna idea?
Se puede hacer algo similar haciendo que se baya transparentando lentamente???
Pasa el código.
En principio
material.color = Color.Lerp(negro, blanco, time.deltatime);
[/quote]
Hola @nomoregames, yo creo que muchas de estas dudas que tienes son muy muy básicas. O quizá tal vez sea cómo planteas tus preguntas, porque no das mucho detalle, y entonces asumimos que no es para ningún caso concreto...
¿No te saldría más a cuenta mirarte primero la documentación de Unity, y algunos tutoriales de programación de C# con Unity3D, antes de ponerte a preguntar?
¿O buscar antes la pregunta por Google, a ver si alguien ha dado ya con la solución?
Ay alguna forma de hacer lo mismo pero transparentando?? E probado con lo que explicaban en otros foros pero "na de na "
Renderer r;
public float y;
// Update is called once per frame
void Update()
{
y += 0.3f;
this.GetComponent<MeshRenderer>().material.color = new Color(1.0f, 1.0f, 1.0f, y);
}
PD; Estuve buscando por foros pero no entendía sus respuestas...
tratare de currarrmelo mas antes de preguntar.
Cita de: nomoregames date=1581417758Ay alguna forma de hacer lo mismo pero transparentando?? E probado con lo que explicaban en otros foros pero "na de na "
Renderer r;
public float y;
// Update is called once per frame
void Update()
{
y += 0.3f;
this.GetComponent<MeshRenderer>().material.color = new Color(1.0f, 1.0f, 1.0f, y);
}
PD; Estuve buscando por foros pero no entendía sus respuestas...
tratare de currarrmelo mas antes de preguntar.
colorOpaco = new Color(1f,1f,1f,1f);
colorTransparente = new Color(1f,1f,1f,0.1f);
this.GetComponent<MeshRenderer>().material.color = Color.Lerp(colorOpaco, colorTransparente, time.deltaTime);
Cita de: nomoregames date=1581347652¿Alguna idea?
En general es muy común que si arrancás no sepas usar los Lerp, por lo menos yo la pasé igual. El truco está en entender cómo es que se usan para lograr ese efecto de suavizado.
El efecto se debe a dos cosas:
Que el "punto a" (primer argumento) cambie cuadro a cuadro.
Debido a 1, el desplazamiento respecto del "punto a" (afectado por el tercer argumento) parece ir reduciéndose (el factor aproximadamente fijo, el desplazamiento este no lo es).
Interpolar linealmente (Lerp) es algo que todo el mundo sabe, por ejemplo si tenés un punto en a y otro en b e interpolas con un factor de t (0 a 1), tenés que el resultado c = a + (b - a) t (creo que lo puse bien), basicamente te vas acercado en un factor t al destino. El truco está en reasignar el punto a (el item 1 anterior):
En vez de:
c <- a + (b - a) t
Ahora tenés:
a <- a + (b - a) t
Ahora, cuadro a cuadro vas a estar moviendo el origen, y por lo tanto el Lerp va a cambiar también. El efecto es algo así (t = 0.25):
A ----------------↓---------------------------------------------- B
A--------------↓------------------------------ B
A--------↓-------------------- B
A-----↓------------- B
El Color.Lerp hace exactamente eso, pero con floats, y considerando componente a componente.
Buenas tardes
Cita de: leocub58 date=1581462663colorOpaco = new Color(1f,1f,1f,1f); colorTransparente = new Color(1f,1f,1f,0.1f); this.GetComponent<MeshRenderer>().material.color = Color.Lerp(colorOpaco, colorTransparente, time.deltaTime);
E probado este codigo... pero sigue sin funcionar, el objeto se queda de color blanco y ya. A que crees que se debe??
en todo caso muchas gracias a los dos por vustras respuestas
Si lo que queres transparentar es el material aplicado a un modelo 3d, no podes modificar el A (alpha channel) del color del material, ya que el standard surface shader es un shader opaco por defecto ("ShaderType = Opaque"), tenes que modificar el shader o crear uno que pueda transparentarse. Esto se debe a que los shaders en modo opaco cortan el dibujado de los objetos que se encuentran tras otros objetos desde la vista de la camara del juego, para acelerar el renderizado y optimizar un poco la velocidad de renderizado. Al usar un shader en modo transparencia, el engine empieza a mirar que hay detras del objeto tildado de transparente y asi puede determinar cuanto de estos objetos se ve basado en el alpha channel del material. espero haber sido claro, igual te dejo un link a un post del foro de unity en el cual tratan el tema y proponen shaders de ejemplo.
https://forum.unity.com/threads/transparency-with-standard-surface-shader.394551/ (https://forum.unity.com/threads/transparency-with-standard-surface-shader.394551/)
Nunca e trabajado con shaders... cuando puedo lo pruebo y comento
Cita de: nomoregames date=1581519690Buenas tardes
E probado este codigo... pero sigue sin funcionar, el objeto se queda de color blanco y ya. A que crees que se debe??
en todo caso muchas gracias a los dos por vustras respuestas
lo más probable es que el material del objeto no esté en transparente.
Cita de: leocub58 date=1581600902lo más probable es que el material del objeto no esté en transparente.
Y como lo hago?? Miro tutoriales pero no me entero
Cita de: nomoregames date=1581614234Y como lo hago?? Miro tutoriales pero no me entero
pasa foto del inspector cuando seleccionas el objeto
Buenas noches
Muchas gracias francoe, leeré con mas atención sobre rendering mode, y cuando me lo empape bien veré si saco algo en limpio
Ahora que veo este post, ¿por qué no utilizas el gradient? Soporta color y/o alpha con tiempo de 0f a 1f:
https://docs.unity3d.com/ScriptReference/Gradient.html (https://docs.unity3d.com/ScriptReference/Gradient.html)
Acabo de ver su API y es asquerosa y sospechosamente similar al AnimationCurve. ¿Será un mal presagio?
Yo lo implemento para fades de colores aunque la tengo bien encapsulada y que soporte diferentes tiempos devolviendo siempre entre 0f y 1f. Luego el value lo genero con iTween.
Cita de: pioj date=1581933450Acabo de ver su API y es asquerosa y sospechosamente similar al AnimationCurve. ¿Será un mal presagio?
Por dios, copiaron y pegaron las clases KeyFrame y AnimateCurve....
Probadla! No seáis tan criticones con ella. Viva el gradient, abajo el Lerp