0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

いなたつAdvent Calendar 2019

Day 2

UnityとスポナーとTerrainとわたし

Last updated at Posted at 2019-12-02

はじめに

いなたつアドカレの二日目の記事です。

今回は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ライフを

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?