2015-08-26 1 views
0
using UnityEngine; 
using System.Collections; 

public class underWater : MonoBehaviour { 
    public float uwaterLevel=15f; 
    public Color normalColor; 
    public Color underWaterColor; 



    void Start() { 
     normalColor = new Color (0.5f,0.5f,0.5f,0.5f); 
     underWaterColor = new Color (0.22f,0.65f,0.77f,0.5f); 

    } 


    void Update() { 
     Debug.Log (uwaterLevel); 
     Debug.Log (transform.position.y); 
     if(Camera.main.transform.position.y<uwaterLevel){ 
      Debug.Log("Underwater Update"); 
      setUnderWater(); 
     }else{ 
      Debug.Log("Normal Update"); 
      setNormal(); 
     } 

    } 
    public void setUnderWater(){ 
     Debug.Log("Under Water"); 
     RenderSettings.fog = true; 
     RenderSettings.fogDensity = 0.05f; 
     RenderSettings.fogColor = underWaterColor; 

    } 
    public void setNormal(){ 
     Debug.Log("Normal"); 
     RenderSettings.fog = true; 
     RenderSettings.fog = false; 
     RenderSettings.fogDensity = 0.003f; 
     RenderSettings.fogColor = normalColor; 

    } 
} 

Как я могу определить, находится ли мой персонаж под водой? Вода над землей (озеро между холмами), поэтому я не могу использовать отрицательную ось Y. Я использую FPSController от Unity Standard Assests.Подводный мир в единстве5

ответ

1

Сделать большой Collider размер воды. Сделайте его триггером. Сделать это тег "Water"

public void OnTriggerEnter(Collider col) 
{ 
    if(col.tag == "Water") 
    { 
     // In water 
    } 
} 

public void OnTriggerStay(Collider col) 
{ 
    if(col.tag == "Water") 
    { 
     // In water 
    } 
} 

public void OnTriggerExit(Collider col) 
{ 
    if(col.tag == "Water") 
    { 
     // Exit water 
    } 
} 
0

Я отправляю ответ, а не комментарии, так как я еще не могу комментировать.

Как и сказал Эндрю, чтобы ваша игра не думала, что вы под водой, как только ваш персонаж встает в воду, вы можете добавить пустой игровой объект на несколько сантиметров над головой вашего персонажа и поставить коллайдер на что.

Затем используйте логику Эндрю, чтобы определить, что ваш персонаж находится под водой.

Смежные вопросы