Posted at

ランダムに障害物をVRレーシングゲームに登場させる

More than 3 years have passed since last update.

この記事の5回目

今回はランダムに障害物を発生させるロジックを作ります。とはいっても多くはhityotamaさんの記事【Unity開発4】敵キャラをランダムで生成! Randam.RangeとInstantiate【ドライビングゲーム5】をもとにしています。

今回はその中の、createScript.csの変更とそれにまつわる、各設定の変更について記載します。


createScript.csの変更

スクリプトは、Mapの生成の削除やenemyborderなどの固定値の変更を行いました。そうすると以下のようになります。


createScript.cs

using UnityEngine;

using System.Collections;

public class createScript : MonoBehaviour {

public GameObject enemy1;
public GameObject enemy2;
public GameObject enemy3;
public GameObject enemy4;

int border = 1000;
int enemyBorder = 1;
float defdiff = 100f;
void Update (){
if (transform.position.z > enemyBorder) {
CreateEnemy ();
}
}

void CreateEnemy (){
if (Random.Range (0, 3) == 0) {
Instantiate (enemy1, new Vector3 (-5f, 0f, enemyBorder + defdiff), enemy1.transform.rotation);
}

if (Random.Range (0, 3) == 0) {
Instantiate (enemy2, new Vector3 (-1.8f, 0f, enemyBorder + defdiff), enemy2.transform.rotation);
}
if (Random.Range (0, 3) == 0) {
Instantiate (enemy3, new Vector3 (1.8f, 0f, enemyBorder + defdiff), enemy3.transform.rotation);
}

if ((Random.Range (0, 3) == 0)) {
Instantiate (enemy4, new Vector3 (5f, 0f, enemyBorder + defdiff),enemy3.transform.rotation);
}
enemyBorder += Random.Range (0, 3)*10;
}

}


このスクリプトをMainCameraにアタッチします


各設定の変更

ここではアタッチ後のインスペクタの設定を説明します。hityotamaさんの記事では、Classic Carというアセットを使っていましたが今回は自作したものを利用します。

自作したオブジェクトはCubeを利用して作りました設定値は下の図のように設定しました。

スクリーンショット 2015-07-20 0.02.39.png

上記のBlockを障害物として下記の図のようにcreateScript.csのインスペクタに設定しました。

スクリーンショット 2015-07-20 0.05.13.png

これで障害物がランダムで現れます。