2015-09-21 69 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

嘿非常感谢,到目前为止,它的工作原理和不适跟上它进一步发挥。 –