【Unity】3D射的ゲームを作ってみる①(一定時間で消える的を作る)
スポンサーリンク
それではUnityでゲームを作って行きたいと思います。
1本目ですからね、3Dで簡単に作れるゲームはないかなと考えました。
「射的」にしました!(笑)
ひとまずは「PCで動くゲーム」を作ります。
※本当はスマホアプリ作りたいですが、それはまたの機会に。
まずは新規プロジェクトを作成します。
準備ができたら、地面を作って行きます。
ヒエラルキーウインドウでPlaneをCreateして、以下のよう配置します。
※オブジェクトを追加したり、スクリプトやインスペクターウインドウを編集した時にシーンに「*」マークが付きますが、編集中ということです。「Ctrlキー+Sキー」などでこまめに保存しましょう。
カメラの位置を合わせるのが難しいですね。
そんな時は・・・
ヒエラルキーウインドウでカメラオブジェクトを選択して、上部メニューの「GameObject>Align With View」を押すと、カメラ位置をシーンビューで表示している位置と同じにすることができます。
次に、的(まと)を作って行きます。
的はランダムな場所から現れて、3秒で消える仕様にします。
以下のように作成していきます。
1.ベースとなる的を作成
1-1.ゲームオブジェクト作成
・ヒエラルキーウインドウでCubeをCreateして、位置、サイズを調整します。
オブジェクトの名前は「Target」にリネームします。
1-2.スクリプト作成
・プロジェクトウインドウでScriptsフォルダを作成します。
・ヒエラルキーウインドウで「Target」を選択して、インスペクターウインドウのAdd Componentボタンを押して、虫眼鏡の入力欄にスクリプト名(ここでは「TargetScript」とします)を入力して、New Script>Create add Addをクリックします。
・プロジェクトウインドウにできたスクリプトはScriptsフォルダに入れておきましょう。
2.ランダムで出現する的を作成
オブジェクトを複製する機能であるプレハブを作成します。
2-1.プレハブ作成
・プロジェクトウインドウでPrefabフォルダを作成します。
・1-1で作ったTargetをPrefabフォルダにドラッグします。プロジェクトウインドウ側のTargetは削除してしまって良いです。
2-2.プレハブ用オブジェクト作成
・ヒエラルキーウインドウでCreate Emptyでオブジェクトを作成して「TagetFactory」にリネームします。
2-3.スクリプト作成
・ヒエラルキーウインドウで「TargetFactory」を選択して、インスペクターウインドウのAdd Componentボタンを押して、虫眼鏡の入力欄にスクリプト名(ここでは「TargetFactoryScript」とします)を入力して、New Script>Create add Addをクリックします。
・プロジェクトウインドウにできたスクリプトはScriptsフォルダに入れておきましょう。
・インスペクターウインドウからアクセスできるように以下のように「TargetFactoryScript」を編集します。
(「public GameObject target;」を追加します。)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TargetFactoryScript : MonoBehaviour { public GameObject target; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }
・インスペクターウインドウの「Target」にプレハブのTargetをドラッグします。
・3秒ごとに消えたり、現れたりするように以下のように「TargetFactoryScript」を編集します。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TargetFactoryScript : MonoBehaviour { public GameObject target; // タイマー public float timeOut; // Start is called before the first frame update void Start() { // メソッドをリピートする InvokeRepeating("CreateTarget", 0f, 3f); } // 的を生成する void CreateTarget() { // インスタンスを生成 GameObject newTarget = Instantiate(target, new Vector3(Random.Range(-2f, 2f), transform.position.y, transform.position.z), transform.rotation); // 時間経過で削除する Destroy(newTarget, timeOut); } // Update is called once per frame void Update() { } }
timeOutはインスペクターウインドウで3秒にします。
とりあえずこれで的ができました。
再生ボタンを押すと、的が表示されてますね。
続きは次回にします。