【unity】シューティングゲームを作ろう
プロジェクトの作成

素材の登録
Projectビューに以下の素材をドラッグ&ドロップする。



プレイヤー作成
プレイヤーの登録
プレイヤーの絵をヒエラルキーにドラッグ&ドロップ
Box Collider 2Dの登録
インスペクタービューから「Add Component」で「physics2D」->「Rigidbody 2D」を追加、Body Typeを Kinematicにする。そのあとSizeを調整してください。
スクリプトを作る
projectViewを右クリックして「Create」->「C# Script」を選択Scriptが追加されるので、名前を「PlayerCtrl」にする。
スクリプトを書く
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtrl: MonoBehaviour
{
//プレイヤーが動くスピード
public float moveSpeed = 0.1f;
//動作するためのメンバー
public Rigidbody2D rb;
//動作のためのベクター
Vector2 movement;
//発射する玉のプレハブ
public GameObject bullet;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
//球を発射する
if(Input.GetButtonDown("Fire1"))
{
Instantiate(bullet, transform.position, Quaternion.identity);
}
//移動ボタンが押されたら移動する
movement.x = Input.GetAxisRaw("Horizontal");
transform.Translate(movement * moveSpeed);
}
}
書いたソースをPlayerにドラッグ&ドロップ
Projectの「PlayerCtrl」をヒエラルキーのplayerにドラッグアンドドロップする。
動作確認
プレイヤーが左右に動くことを確認してください。
弾の作成
弾の登録
弾の絵をヒエラルキーにドラッグ&ドロップ。大きさをTransformのScaleから変える。
Rigidbody 2Dの登録
インスペクタービューから「Add Component」で「physics2D」->「Rigidbody 2D」を追加、Body Typeを Kinematicにする。
Box Collider 2Dの登録
インスペクタービューから「Add Component」で「physics2D」->「Box Collider 2D」を追加、Body Typeを Kinematicにする。そのあとSizeを調整してください。
スクリプトを作る
projectViewを右クリックして「Create」->「C# Script」を選択Scriptが追加されるので、名前を「Bullet」にする。
スクリプトを書く
ファイルをダブルクリックして、以下の内容を書き込む
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Bullet : MonoBehaviour
{
/// <summary>
/// 移動スピード
/// </summary>
public float speed = 0.1f;
/// <summary>
/// 当たった時のエフェクト
/// </summary>
public GameObject hitEffect;
/// <summary>
/// スコアを表示するテキスト
/// </summary>
Text score;
// Start is called before the first frame update
void Start()
{
score = GameObject.Find("Score").GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
// 下から上に弾を移動
transform.position += new Vector3(0, speed, 0);// * Time.deltaTime;
}
/// <summary>
/// 画面外に出た時の処理
/// </summary>
void OnBecameInvisible()
{
Destroy(this.gameObject);
}
/// <summary>
/// 何かとぶつかったときの処理
/// </summary>
/// <param name="collision"></param>
//private void OnCollisionEnter2D(Collision2D collision)
private void OnTriggerEnter2D(Collider2D collision)
{
//タグがEnemyだったら
if (collision.tag == "Enemy")
{
GameObject effect = Instantiate(hitEffect, collision.transform.position,
Quaternion.identity);
score.text = (int.Parse(score.text) + 10).ToString("D4");
Destroy(collision.gameObject);
Destroy(effect, 2f);
Destroy(gameObject);
}
}
}
書いたソースをBulletにドラッグ&ドロップ
Projectの「Bullet」をヒエラルキーのtamaにドラッグアンドドロップする。
動作確認
弾が上に動くことを確認してください
弾に爆発エフェクトを追加する(爆発エフェクトが作ってある場合)
ヒエラルキーのtamaをクリックし、Inspectorビューの「Bullet(Script)」のHitEffectに、ProjectViewの爆発エフェクトをドラッグアンドドロップしてください。
弾のエフェクトを作る際にはこちらの記事を参考にしてください
弾のプレハブを作る
「Hierarchy(ヒエラルキー)ビュー」のtamaをProjectファイルにドラッグ&ドロップする。
プレイヤーに弾を登録する
「Hierarchy(ヒエラルキー)ビュー」のPlayerを選択し、インスペクタービューの「Player Ctrl(Script)」を見つける。その中のBulletにtamaのプレハブをドラッグアンドドロップ
スコアの表示領域を作る
HierarchyビューからUI->Textを選択し、名前を「Score」に変え、テキストを0000にする。
敵の作成
敵の登録
敵の絵をヒエラルキーにドラッグ&ドロップ
Rigidbody 2Dの登録
インスペクタービューから「Add Component」で「physics2D」->「Rigidbody 2D」を追加、Body Typeを Kinematicにする。
BoxColloider2Dの登録
インスペクタービューから「Add Component」で「physics2D」->「Rigidbody 2D」を追加、そのあとSizeを調整してください。
タグを登録する
Inspectorビューの一番上のTagの横にあるドロップダウンリストをクリックし、メニュー内のAdd Tagをクリック。「Tags」にある「+」をクリック「New Tag Name」に「Enemy」をいれて「Save」。
「Hierarchy(ヒエラルキー)ビュー」のEnemyをクリックして、Tagから「Enemy」を選択する。
スクリプトを作る
projectViewを右クリックして「Create」->「C# Script」を選択Scriptが追加されるので、名前を「EnemyCtrl 」にする。
スクリプトを書く
ファイルをダブルクリックして、以下の内容を書き込む
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyCtrl : MonoBehaviour
{
// プレイヤーの移動速度
public float Speed;
// 弾のプレハブ
public GameObject bulletPrefab;
private float moveY; // X軸の移動量
// Start is called before the first frame update
void Start()
{
moveY = -10;
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(0, moveY, 0) * Time.deltaTime;
}
/// <summary>
/// 画面外に出た時の処理
/// </summary>
void OnBecameInvisible()
{
Destroy(this.gameObject);
}
}
書いたソースをEnemyにドラッグ&ドロップ
今書いたスクリプトファイルををヒエラルキーのEnemyにドラッグアンドドロップする。
敵の生成される位置を決める
敵の画像を動かして敵を生成させたい位置に移動する。
プレハブを作る
「Hierarchy(ヒエラルキー)ビュー」のEnemyをProjectファイルにドラッグ&ドロップしてプレハブにします。
敵を出現させる
管理コンポーネントを登録
「Hierarchy(ヒエラルキー)ビュー」を右クリックし「Create Empty」を選択する。
スクリプトを作る
projectViewを右クリックして「Create」->「C# Script」を選択Scriptが追加されるので、名前を「GameController」にする。
スクリプトを書く
ファイルをダブルクリックして以下の内容をファイルに書く。
InstantiateのRandomの中を敵の出現させたい値に変えるのを忘れないように。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameCtrl : MonoBehaviour
{
public GameObject enemyPrefab;
void Start()
{
InvokeRepeating("EnemyCreate", 1, 1);
}
void EnemyCreate()
{
Instantiate(enemyPrefab, new Vector3(Random.Range(-30f,30f), 33, 0),
new Quaternion(180f,0,0,0));
}
}
書いたソースをGameObjectにドラッグ&ドロップ
今書いたスクリプトファイルををヒエラルキーのGameObjectにドラッグアンドドロップする。
敵のプレハブを登録
GameObjectを選択し、InspectorビューののGameController内の、「EnemyPrefab」にProject内のEnemy(プレハブ)をドラッグ&ドロップする。
しあげ
必要のないコンポーネントを消す
「Hierarchy(ヒエラルキー)ビュー」内の、Enemyを右クリックし、「Delete」を選択して消す。同様に「tama」も消す。
プレーヤーの位置を決める
プレーヤーを画面下中央に持ってくる