2015-04-02 62 views
1

我正在製作一個遊戲對象以「脈衝」它的顏色,在UNITY 3D中。創建團結的脈衝顏色

我想要的顏色保持2種顏色之間進行切換,

下面是我的代碼,它不工作(我在更新功能這樣做):

 renderer.material.color = Color.Lerp(renderer.material.color, TargetColor,fadeSpeed*Time.deltaTime); 

     if(renderer.material.color == TargetColor) 
      { 

       if(renderer.material.color == Color.gray) 
       { 
        TargetColor = Color.white; 
       } 
       else if (renderer.material.color == Color.white) 
       { 
        TargetColor = Color.gray; 
       } 

      } 

我是新來的這個。我究竟做錯了什麼 ?如果您選擇fadeSpeed類似10一個合適的值(不要忘了初始化TargetColor像void Start() {TargetColor = Color.gray;}

你正在一個錯誤的方式使用線性插值

+0

確定TargetColor已經開始與價值?它在我看來像你的代碼應該在任何情況下工作,除非TargetColor不是Color.white或Color.gray。 – 2015-04-02 07:03:11

回答

2

您的代碼工作。這使得顏色在遠距離達到目標值。將此調試日誌添加到Update中的某處,您可以看到問題:

Debug.Log(「Current color:」+ renderer.material.color);

如果我需要編寫我自己,我會做這樣的事情:

public class ColorBlinker : MonoBehaviour 
{ 
    public float FadeDuration = 1f; 
    public Color Color1 = Color.gray; 
    public Color Color2 = Color.white; 

    private Color startColor; 
    private Color endColor; 
    private float lastColorChangeTime; 

    private Material material; 

    void Start() 
    { 
     material = GetComponent<Renderer>().material; 
     startColor = Color1; 
     endColor = Color2; 
    } 

    void Update() 
    { 
     var ratio = (Time.time - lastColorChangeTime)/FadeDuration; 
     ratio = Mathf.Clamp01(ratio); 
     material.color = Color.Lerp(startColor, endColor, ratio); 
     //material.color = Color.Lerp(startColor, endColor, Mathf.Sqrt(ratio)); // A cool effect 
     //material.color = Color.Lerp(startColor, endColor, ratio * ratio); // Another cool effect 

     if (ratio == 1f) 
     { 
      lastColorChangeTime = Time.time; 

      // Switch colors 
      var temp = startColor; 
      startColor = endColor; 
      endColor = temp; 
     } 
    } 
} 

此外,看一看補間圖書館。他們非常有幫助。

http://dotween.demigiant.com/

http://itween.pixelplacement.com/

http://u3d.as/content/dented-pixel/lean-tween/31i

+0

工程就像一個魅力! – Isuka 2016-08-08 14:12:06