nomoregames 35 Report post Posted February 10, 2020 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??? Share this post Link to post Share on other sites
leocub58 208 Report post Posted February 10, 2020 Pasa el código. En principio Quote material.color = Color.Lerp(negro, blanco, time.deltatime); Share this post Link to post Share on other sites
pioj 803 Report post Posted February 10, 2020 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? Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 11, 2020 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. Share this post Link to post Share on other sites
leocub58 208 Report post Posted February 11, 2020 12 hours ago, nomoregames said: 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. 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); Share this post Link to post Share on other sites
lightbug 835 Report post Posted February 12, 2020 On 2/10/2020 at 12:14 PM, nomoregames said: ¿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. Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 12, 2020 Buenas tardes 15 hours ago, leocub58 said: 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); 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 Share this post Link to post Share on other sites
Pathus22 16 Report post Posted February 12, 2020 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/ Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 13, 2020 Nunca e trabajado con shaders... cuando puedo lo pruebo y comento Share this post Link to post Share on other sites
leocub58 208 Report post Posted February 13, 2020 22 hours ago, nomoregames said: Buenas 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. Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 13, 2020 3 hours ago, leocub58 said: lo más probable es que el material del objeto no esté en transparente. Y como lo hago?? Miro tutoriales pero no me entero Share this post Link to post Share on other sites
leocub58 208 Report post Posted February 13, 2020 4 hours ago, nomoregames said: Y como lo hago?? Miro tutoriales pero no me entero pasa foto del inspector cuando seleccionas el objeto Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 15, 2020 Share this post Link to post Share on other sites
francoe1 536 Report post Posted February 15, 2020 Fijate como dice @leocub58, dentro del material tenes la opción Rendering Mode que debería estar en Transparent. Por otro lado si queres lograr cambiar de un color a otro pasando por su blend alpha deberias crear la lógica correspondiente. Frame Alpha A Alpha B 0% 1 0 50% 0.5 0.5 100% 0 1 Share this post Link to post Share on other sites
nomoregames 35 Report post Posted February 16, 2020 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 Share this post Link to post Share on other sites