どうも、チャーさんです。
この記事では、Unityで敵をスポーンさせる方法について
お話しします。
なので、あなたがこの記事を読めば、
すぐにUnityで敵をスポーンさせることができるようになります。
しかし、この記事を読まなければ、
Unityで敵をスポーンさせる機能を作るのに、
かなり時間がかかってしまうでしょう。
なので、すぐにUnityで敵をスポーンさせれるように
なりたいと思っているならばこのまま下にスクロールして、
記事を読んでください。
動画による説明はこちら↓
目次
Unityで敵をスポーン させる方法
で早速、本題です。
Unityで敵をスポーンさせる方法は以下の手順です。
- 敵のプレハブを用意する
- スポナー(敵をスポーンさせるオブジェクトのこと)を用意する
- 敵をスポーンさせるスクリプトをスポナーオブジェクトにAdd Componentしてコードを書く
これだけです。
安心してください簡単にできます。
1つずつ見ていきましょう。
1敵のプレハブを用意する。
ですが、これは敵用に用意したオブジェクトを
まずは用意してください。
敵用のオブジェクトは例えばアセットストアで
入手したなんか見た目がいけてるゾンビとか、
モンスターでもいいですし、
CubeとかSphereとかを敵に見立てたゲームオブジェクト
などでもOKです。
その敵に見立てたHierarchyの中にあるゲームオブジェクトを、
ProjectsのAssetのとこまでドラッグ&ドロップ
してください。
これだけで、敵のプレハブがAssetsの中に出来上がります。
で、今後は今用意したこの敵プレハブをスポーンさせて
いくので、Hierarchyにある敵オブジェクトは、
消してもいいですし、シーンに表示しておきたいなら、
そのまま残しておいてください。
次に、
2スポナー(敵をスポーンさせるオブジェクトのこと)を用意する
ですが、これはHierarchyの中の+ボタンをクリックし、
空のゲームオブジェクトを選んでください。
英語だとCreate Emptyって書いてるやつです。
これをクリックすると空の透明のゲームオブジェクトができます。
この空のゲームオブジェクトをスポナーとして、
敵をどんどんスポーンさせたい場所に配置します。
すると後は敵をスポーンさせるスクリプトを書いて
Add Componentするだけで、そこからどんどん敵が
湧いて出るようになります。
ちなみにこれを空のゲームオブジェクトにしてる理由は、
スポーン地点が例えばCubeとかSphereみたいな
シーン上で目に見えるものだと見た目的に具合が悪いからだけが
理由でして、
例えば、何か建物的なのから敵がスポーンしてくる
みたいなのとかCubeから敵がスポーンしてくるみたいな
状態にしたいのなら、別に空のゲームオブジェクトを
選ぶ必要はありません。
その際は好きなオブジェクトを選ぶといいです。
ただ空のオブジェクトだと、そういう見た目的な
制約がないのでどこにでも配置しやすいので、
おすすめです。
3敵をスポーンさせるスクリプトをスポナーオブジェクトにAdd Componentしてコードを書く
でプレハブを用意し、スポナーも用意したら次は、
敵をスポーンさせるためのスクリプトを今用意した、
スポナーのゲームオブジェクトにAdd Componentします。
そのためには、まずはスポナーのゲームオブジェクトを
Hierarchyの中でクリックします。
すると、Inspectorというのが出てるので、
そこにあるAdd Componentというのをクリックしましょう。
そしてその中にある、New Scriptというのをクリックし、
適当に名前をつけてください。EnemyとかなんでもOKです。
そしたらスポナー用のオブジェクトに、スクリプトが
適用させるので、次はAssetsの中にある、今用意した
スクリプトをクリックし、
中に敵をスポーンさせるための、コードを書いていきましょう。
で、書く内容は以下です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class createObject : MonoBehaviour
{
public GameObject enemy;
int num = 0;
void Start()
{
}
// Update is called once per frame
void Update()
{
num++;
if(num % 40 == 0){
Instantiate(enemy,new Vector3(数字,数字,数字),Quaternion.identity);
}
}
}
スクリプトだけ見ても、分かりづらいと思うので
補足入れていきます。
まず、
public GameObject enemy;
と書くと、
スポナーとして用意した空のゲームオブジェクトの
Inspectorのスクリプトの部分に、変数名で書いた
Enemyとその右横に空欄ができます。
そこに最初に用意したAssetsの中にある敵プレハブ
オブジェクトを、空欄のとこまでドラッグ&ドロップしましょう。
すると、このEnemyという変数名に、
敵オブジェクトのプレハブがセットされ、以後
Instantiateという関数で続々とスポーンさせることが
できます。
で次に、
num++;
if(num % 40 == 0){
Instantiate(enemy,new Vector3(数字,数字,数字),Quaternion.identity);
}
のとこですが、
この中にある、
Instantiate(enemy,new Vector3(数字,数字,数字),Quaternion.identity);
という部分の記述で、敵をスポーンさせることができます。
Instantiateの()の中の引数の内容は、
1つ目が生成するオブジェクト。
なので先ほど用意した変数名enemyが入ってます。
次に2つ目が、そのオブジェクトが生成させる座標。
数字数字と書いてる部分に適当に数値をほりこむと、
その座標のいちに敵オブジェクトが生成されます(スポーン)
なので、ここにランダムな数値が毎回入るように記述を
書くと、ランダムな位置で敵が毎回スポーンされるようになります。
ランダムスポーンしたいならそうしましょう。
3つ目の引数は、角度で、Quaternion.identity
でもともとプレハブにした時のオブジェクトの角度のまま
敵オブジェクトが生成されます。
ちなみにInstnatiateは引数1つだけでもよくて
例えばInstantiate(enemy);だけでも敵オブジェクトを
生成してくれます。
ですが2つ目の座標情報の引数を入れると、
3つ目の引数も書かないとエラー出るようになってるので、
注意しましょう。(Quaternion.identityって部分のやつ。)
また生成位置を意図的にばらけないようにした場合、
こスポナーオブジェクトの配置した場所に
ひたすら敵がスポーンされ続けます。
なので敵がスポーンされる位置は工夫しましょう。
で後は、
num++;
if(num % 40 == 0){
の部分ですが、ここは敵オブジェクトをスポーン
するタイミングを制御する部分です。
num変数の数字が1ずつ増えていき、
40で割り切れる時だけスポーンするという記述になってます。
これは実行すると分かりますがかなり早いです。
なので遅くしたい場合は、100とか200とか
%の右の数値を増やしてください。
とゆうことで長々と書いてまいりましたが、
これでUnityで敵をスポーンさせることができます。
まとめ
ということでこのあたりでまとめておきます。
Unityで敵をスポーンさせる方法は、
- 敵のプレハブを用意する
- スポナー(敵をスポーンさせるオブジェクトのこと)を用意する
- 敵をスポーンさせるスクリプトをスポナーオブジェクトにAdd Componentしてコードを書く
の3つです。
敵を用意して、スポナーオブジェクトを用意して、
スクリプト書くだけです。
するとUnityで敵をスポーンさせる機能を作れます。
後はスポーンする位置とか、
スポーンするタイミング、(プレイヤーが近づいたらスポーン)
とか敵が一定数以下になったらスポーンとか、
色々あなたが作りたいゲームの状態に合わせて
変更させるといいでしょう。
この記事で紹介したのは、敵をスポーンさせるのに
いっちばん簡単で簡素な記述を紹介したので、
基本みたいな感じで習得しておいてください。
ということでそれでは早速記事の内容を見ながら
やってみてください。
またこのブログではUnityの記事だけ書くので、
Unityで色々作るならぜひブックマークしておいてください。
それでは、Unityで敵をスポーンさせる方法でした。
読んでいただきありがとうございました。
でわ。
チャーさん