Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Como ralentisar una transion de materiales

Iniciado por Paco Morales, Octubre 14, 2015, 10:07:59 PM

Tema anterior - Siguiente tema
Hola, Por fin pude activar un botón UI, este boton lo estoy utilizo para cambiar el material de mi Carácter o Monito, en mi escena...Mi problema ahora es que quiero ralentizar o bajar la velocidad de transición de un material a otro. Por favor cualquier consejo es bienvenido!Gracias
var myMaterials : Material[];
var NextMaterial : int = 0;
   
  
function NextMaterialUsed()
{
    GetComponent.<Renderer>().sharedMaterial = myMaterials[NextMaterial];
    if(NextMaterial < myMaterials.length-1)
        NextMaterial += 1;
    else
        NextMaterial = 0;
}[/quote]



Hola,Hice este cambio y me ha funcionado el cambio de color, que es lo que quería en un principio,Pero ahora quiero controlar el tiempo de transición de colores... No me ha querido trabajar este Script , Por favor alguna sugerencia.Gracias,
 
var fadeSpeed : float = 7.5;
var NextColors : Color[];
var NextMaterial : int = 0;
   
 
function NextMaterialUsed()
{
    GetComponent.<Renderer>().material.color = Mathf.Lerp(GetComponent.<Renderer>().NextColors[NextMaterial],Time.deltaTime * fadeSpeed);          
    if(NextMaterial < NextColors.length-1)
        NextMaterial += 1;
    else
        NextMaterial = 0;
}

  

Pero el Lerp son dos valores y time. Donde está el segundo color en el Lerp?

Cambie el Script y le puse los dos valores, pero no me ha funcionado...Si cambia los colores, pero no me hace el ralentizado...No cambia la velocidad de transición...Que podra ser?
    var startColor : Color;
    var myColors  : Color[];
    var NextColor : int = 0;
    var fadeSpeed : float = 3.5;
     

    function NextMaterialUsed()
    {

    GetComponent.<Renderer>().material.color = Color.Lerp(startColor,myColors[NextColor],Time.deltaTime * fadeSpeed);
                                                   
 
    if(NextColor < myColors.length-1)
        NextColor += 1;
     
    else
    NextColor = 0;
    }
Ayuda Pliss

Me pasaron esta corrección como borrador....Pero ahora si esta fuera de mi alcance....Una persona bondadosa que me pueda ayudar int GetBaseColorIndexFromTime(float time, int numColors, float fadeSpeed)
 {
      return min( (int)time/fadeSpeed, numColors) ;
 }
 
 Color GetColorFromTime(float time, Color[] myColors, float fadeSpeed)
 {
     int srcColorIndex = GetBaseColorIndexFromTime(time, myColors.Length -1, fadeSpeed);
     int destColorIndex = min( srcColorIndex + 1, myColors.Length -1) ;
 
     float lerpFactor = (time % fadeSpeed) / fadeSpeed;
     return Color.Lerp(myColors[srcColorIndex], myColors[destColorIndex], lerpFactor );
 } 

Etiquetas: