Unity-高度計を表示

今回のワークショップで作ったスクリプトメモ その1

#pragma strict
var Alt:int;//staticにしたほうが良いかな?
var customSkin : GUISkin;//スキンの設定なので無くて良い(なんであるの?)
var vSliderValue : float = 0.0;//高度計を画面右隅に
var AudioClip01: AudioClip;//低高度警告音をここにアサイン
var myTexture : Texture2D;//なんだっけ?
var warningGameobject : GameObject;//高さによって警告表示するそのゲームオブジェクトをここでアサイン
var myBool : boolean;//墜落したときのスイッチ用

	
function Start () {
audio.loop = true;//音はループ再生ね
audio.clip = AudioClip01;//音はこれね
audio.volume = 0.0f;//とりあえず音量ゼロね
audio.Play();//ほんで再生しちゃえ!
myBool = true;//墜落スイッチはtrueで
}

function OnGUI(){//高さのスライドバーと高さの数値表示関係
GUI.skin = customSkin;
	GUI.Label(Rect(Screen.width-20, Screen.height-40, 40, 50), "ft");
	GUI.Label(Rect(Screen.width-80, Screen.height-40, 100, 50), vSliderValue.ToString());
	vSliderValue = GUI.VerticalSlider (Rect (Screen.width-60, 20, 100, Screen.height-80), vSliderValue, 6000, 0.0);
//GUI.DrawTexture(Rect(Screen.width/2-256,Screen.height/2-64,512,128), myTexture);

}


function Update () {
Alt=this.transform.position.y;//Y軸の絶対値を入れます

if(myBool==false){//myBoolがfalseなら
fallOff();//fallOffのファンクションをやって
}else{//ちゃうなら
altCheck();//高さチェックね
}

}

function altCheck(){
vSliderValue=Mathf.Round(this.transform.position.y / 0.3048);//Yの高さ(m)をフィートに直します

var posx = transform.position.x;
var posz = transform.position.z;
var height : float = Terrain.activeTerrain.terrainData.GetInterpolatedHeight(posx / Terrain.activeTerrain.terrainData.size.x, posz / Terrain.activeTerrain.terrainData.size.z);//このスクリプトがついているx,y座標のterrain=地形の表面からの高さ=を計測してheightに入れて

var jimen : float = Alt - height;//現在高度ー地面の高さで実際の地形との高さを出してjimenに入れちゃう

if(jimen < 100){//実際の高さが100以下なら
audio.volume = 0.8f;//警告音のボリュームを上げる(つまり警告音はずっと再生されていた!)
warningGameobject.SetActive(true);//warnignGameobjectにアサインしているゲームオブジェクトを表示させる
}else{
audio.volume = 0.0f;//高度を上げたら
warningGameobject.SetActive(false);//警告を非表示に
}


}

function fallOff(){//墜落時の挙動はここに
myBool = false;//myBookはfalseに
audio.volume = 0.0f;//警告音も消す(死んでるから)
warningGameobject.SetActive(false);//警告表示も消す(死んでるから)
}