2015-09-21 25 views
0

我需要霧對Y150的水平,第二次上水平Y90換一次兩次。我想設置 gameObject.transform.position.y 的功能只能從Y150到Y80,但我無法弄清楚如何做。霧通過改變位置transform.position.y

非常感謝你在這裏是迄今爲止

// Use this for initialization 
void Start() { 


} 

bool IsUnderwater(){ 

    return gameObject.transform.position.y < 150; 
    RenderSettings.fog = true; 
    RenderSettings.fogColor = new Color (0.15f, 0.35f, 0.40f, 0.5f); 
    RenderSettings.fogDensity = 0.03f; 

} 
bool IsNotUnderwater(){ 

    return gameObject.transform.position.y < 90; 
    RenderSettings.fog = true; 
    RenderSettings.fogColor = new Color (0.8f, 0.4f, 0.2f, 0.5f); 
    RenderSettings.fogDensity = 0.03f; 

} 



// Update is called once per frame 
void Update() { 

    RenderSettings.fog = IsUnderwater(); 
    RenderSettings.fog = IsNotUnderwater(); 

} 
+3

你的兩個方法的代碼將不會執行。目前您遇到的問題是什麼? – Sayse

+0

的問題是,我woudl像diferent霧渲染設置出現Y上面150不同於霧呈現ý150之間設置 - ÿ80和比下面ÿ80我想再次diferent之一。我的意思是y軸。所以簡單地說我想改變三個不同層次的空間中的霧。 –

回答

0

的「return」語句在大多數編程語言,包括C#我的代碼,將退出函數,返回給定值。這意味着實際上影響霧設置的以下幾行永遠不會運行。

還有一堆不同的方式來設置這個代碼了,這裏有一個簡單的例子:

void SetFog() 
{ 
    if(transform.position.y >= 150) 
    { 
     RenderSettings.fog = true; 
     return; 
    } 

    if(transform.position.y >= 90) 
    { 
     RenderSettings.fog = true; 
     RenderSettings.fogColor = new Color (0.15f, 0.35f, 0.40f, 0.5f); 
     RenderSettings.fogDensity = 0.03f; 

     return; 
    } 

    RenderSettings.fog = true; 
    RenderSettings.fogColor = new Color (0.8f, 0.4f, 0.2f, 0.5f); 
    RenderSettings.fogDensity = 0.03f; 
} 

void Update() 
{ 
    SetFog(); 
} 

請記住,這是一個非常簡單的解決方案,而不是非常擴展或維護。這可能是值得加入的設置數組,你可以在編輯器中調整,1項中每個不同高度的對象。 return語句後

+0

嘿非常感謝,到目前爲止,它的工作原理和不適跟上它進一步發揮。 –