高さを出すだけであればy値だけでよいが,実際には地面との高さを測らなくてはならない.でないと,山にめり込んだまま飛行したり墜落しないこともできる.
そこで自分直下の地形の高さを計測し,自分の高さとの差分を出すスクリプトです
※このスクリプトはコアの部分一部です(なぜJSでかいてるんだ,,,)
function altCheck(){ //この関数はupdateで常に呼び出していた vSliderValue=Mathf.Round(this.transform.position.y / 0.3048);//フィート変換用 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);//地形の表面の高さを出してたような //var height : float = Terrain.activeTerrain.terrainData.GetInterpolatedHeight(0.5, 0.5); var jimen : float = Alt - height;//自機の高さと地形の表面の高さを出して差分をもとめる if(jimen < 100){ //地形まで100ft以下なら GetComponent.<AudioSource>().volume = 0.8f;//常時再生している警告音の音量を上げる warningGameobject.SetActive(true);//警告表示のグラフィック(この当時はテクスチャ貼ったゲームオブジェクト)を可視化する }else{ GetComponent.<AudioSource>().volume = 0.0f;//常時再生している警告音の音量を下げる warningGameobject.SetActive(false);//警告表示のグラフィック不可視にする } }