はじめに
いなたつアドカレの二日目の記事です。
今回はUnityのTerrainでフィールドを生成し、地面の高さにかかわらず地面から一定距離に敵をスポーンさせる方法を紹介します。
じっそー
spawner.cs
int posx = 500;
int posy = 500;
float height = Terrain.activeTerrain.terrainData.GetInterpolatedHeight(
posx / Terrain.activeTerrain.terrainData.size.x,
posz / Terrain.activeTerrain.terrainData.size.z);
これで、x座標:500,z座標:500 でのTerrainの地面の高さ(y座標)を変数heightに取得できます。
これを利用し、posx,posyを乱数などで指定することでTerrain上の(x,y,z)を取得し、Vector3型で三次元座標で値を返すことで、
Instantiate(target, spawnPos(), transform.rotation);
このようにすることで、targetという変数にはいった敵をスポーンさせることができますね。
第二引数がさきほどの、Vector3型の値を返す関数ですね。
注意
返すVector3型の値をreturn new Vector3(posx,height,posy)
のようにしてしまうと、オブジェクトのサイズによっては埋まってしまう可能性が考えられるため、heightに少し値を加算し余裕を持たせる方が、安心できます。
良きUnityライフを