[Unity]初心者向けゾンビシューティングゲーム開発1/6ステージ&操作キャラ

この記事ではUnity初心者向けに簡単なゾンビゲームの解説をしていきます。説明の通りに進めていけば一日で作れるようにしているのでゲームを始めて作る・3Dシューティングゲームを作ってみたいという方はぜひ参考にしてみてください。

下の動画が今回作っていくゲームです。小さいマップにゾンビが1体おり、銃で撃つことでゾンビを倒せます。

倒されたゾンビはマップ内で速度を上げてランダムに復活します。

ゾンビが倒される度にスコアが入り、ゾンビに触れるとゲームオーバーとなります。

説明は「ステージ&操作キャラ」、「銃から弾丸を発射させる」、「ゾンビのアニメーション」、「ゾンビ当たり判定」、「スコア表示&ゾンビのリスポーン」、「ゲームオーバー画面作り」の6つの順で進んでいきます。

画像を挟みながら解説し、画像には作業の順番に数字を入れて解説するのでその通りに進んでいってください。

プログラムのコードなどは簡単に説明も入れるので完成したら自分なりに好きに改良してみてください。

最後に記事の作成者は壊滅的に英語ができません。
ゲームで使う素材に英語で名前をつけたりしますがスペルミスを普通にしているのでミスを見つけても温かい目で見てあげてください。

では解説をはじめます。


ステージ&操作キャラ

銃から弾丸を発射させる

ゾンビのアニメーション

ゾンビの当たり判定

スコア表示&ゾンビのリスポーン

ゲームオーバー画面


日本語にする

Unityはデフォルトだと英語表記ですが、こちらに日本語表記にする方法を載せています。
すぐに終わる作業なので日本語表記にしたい場合は参考にしてください。

まずはUnityを開き、画像左上の赤丸「New project」をクリックします。

画像の数字の通りに項目をクリックしていってください。

まずは左の項目から「All templates」をクリックし(画像1番目の赤丸)、出てきた項目から「3D」をクリックします。(画像2番目の赤丸)

右下でゲームの名前をつけることができます。ここは自分の好きで大丈夫です。(画像3番目の赤丸)

全て出来たら右下の「Create project」をクリックしてゲーム制作を開始できます。(画像4番目の赤丸)

こちらがゲームを制作する画面になります。

一つ下で簡単に画面の説明をしますが、めんどうな場合は飛ばしても大丈夫です。

左側の黄緑の四角中は「ヒエラルキー」といって、キャラクターやマップなどゲームに使う全ての材料をここに入れます。ここに入っているものがゲーム上で実際に表示されます。

下にある「プロジェクト」にもゲームの材料が入りますが、ここに入っているものはゲーム上に実際に表示はされません。
ゲームで使うプログラムや素材を入れておく場所、パソコンで言う所のエクスプローラーやFinderのようなものだと考えてください。

右側の黄色の四角中は「インスペクター」と言って、ヒエラルキーに入っている物の設定を変更する際に使用します。
簡単に説明するとヒエラルキーに入っているキャラクターの大きさや位置を変えたり、重量をつけたりする際に使います。

最後に真ん中の赤色の四角中はゲーム画面で、この画面に映る通りにゲーム内の物が表示されます。
赤色の四角中左上には「シーン」と「ゲーム」という項目がありますが、
ゲームをクリックするとヒエラルキーに追加しているカメラ視点で見ることができます。操作キャラクターができたらこの「ゲーム」視点で確認したりします。


ステージ作り

ではまずはゲームを進行していくステージを作っていきます。左上の「ヒエラルキー」「+」マークをクリックすると(画像1番目の赤丸)項目が出てくるので「3Dオブジェクト」→「キューブ」とクリックしていきます(画像2番目の赤丸)

するとゲーム画面真ん中に四角いブロックが生成されます。

この四角のブロックはオブジェクトといい、このブロックをゲームのステージにしていきます。ちなみにUnityのゲームで使う物体は全てオブジェクトといいます


画像左側に「ヒエラルキー」という欄がありますね。ここにゲームで使うオブジェクトを入れていきます。

ヒエラルキーの一番下に「Cube」というオブジェクトがありますが、これが先ほど追加した四角のオブジェクトです。

この「Cube」の名前を「地形」に変更します。
Cubeを右クリック(画像1番目の赤丸)するといくつか項目が出るのでその中にある「名前を変更」をクリックで変更できます(画像2番目の赤丸)

この「地形」をクリックするとオブジェクトの設定を変更できます(画像1番目の赤丸)。右側に「Transform」という欄がありますね。ここにはそれぞれ「位置」、「回転」、「スケール」の3つの項目があります。

ここのX軸Y軸Z軸の数字を変更することでオブジェクトの形、大きさを変更できます。このオブジェクトはステージにしたいので大きさのみを変えて床のようにします(画像では「拡大/縮小」のXとZの大きさをそれぞれ50にしています)(画像2番目の赤丸)

次にステージにテクスチャをつけていきます。

こちらから草原のテクスチャをダウンロードし、画像をUnityのプロジェクトに保存先から左クリック長押しで移動します。

その画像を「地形」に左クリック長押しで持っていくと地形が草原に変更されます。

地形をクリックして(画像1番目の赤丸)右のテクスチャの三角マークをクリックするとタイリングという項目があります。

そこのXとYの数値を上げることでテクスチャを細かくすることができます(画像2番目の赤丸)
やらなくても問題ないですが、必要であればイジってみてください。
マップが大きすぎてテクスチャを読み込んだ時に引き伸ばされたように表示されることがありますが、そういう時にこれを利用します。


操作キャラクター

ステージができたので操作キャラを作っていきます。ヒエラルキーの「+」マークをクリックし(画像1番目の赤丸)、その中から「3Dオブジェクト」→「キューブ」と進んでいきます(画像2番目の赤丸)

すると画面上に再び四角形が表示されるので、ヒエラルキーからキューブの名前を「Player」に変更し(画像1番目の赤丸)、インスペクターの位置・スケールを変更してキューブの形を縦長にし、大体でいいのでステージの真ん中上に配置します(画像2番目の赤丸)

位置や大きさなどは画像の数値とそのまま同じにして大丈夫です。
これをゲームの操作キャラクターにしていきます。

それができたらPlayerを選択したまま、右下の「コンポーネントを追加」をクリックします(画像1番目の赤丸)

すると画像のような項目が表示されるので上の検索欄から「R」とだけ入力し(画像1番目の赤丸)、その中の「Rigidbody」を選びます(画像2番目の赤丸)

すると新しく「Rigdbody」という項目が追加されます。
このRigdbodyを入れることで重力を付けることができ、これだけでこの「Player」が自動で下に落下するようになります。

「Rigdbody」内には「Constraints」という項目があり、左隣に三角マークがあるのでそれをクリックします。
すると「位置を固定」「回転を固定」という項目が表示されるので、そこのx,y,z全てにチェックを入れます(画像赤丸)

次にヒエラルキーの「+」マークをクリックし(画像1番目の赤丸)、その中にある「カメラ」をクリックします(画像2番目の赤丸)

するとヒエラルキーに「Camera」が追加されるので、左クリック長押しでPlayerの中に入れます。
さらにこの時カメラの位置を調整してブロックの中に入れましょう。
ここも位置を画像右上の数値と同じにすれば良い位置になります(画像では位置のYを0.16、Zを0.09にしています)。

これをゲームの視点にしていきます。ゲーム画面の左上に「シーン」というのもがありますが、ここの隣の「ゲーム」をクリックすることで実際のゲーム視点で画面を確認することができます。

次にプログラミングのコードを書いていきます。
プロジェクトの「+」マークをクリックし(画像1番目の赤丸)、表示される項目から一番上の「作成」をクリックします(画像2番目の赤丸)
さらに表示される項目から「C#スクリプト」をクリックします(画像3番目の赤丸)

すると「スクリプト」というものがプロジェクトで作られるので、名前を「Playercontroller」にします。

このスクリプトにプログラミングのコードを打ち込んでいきますが、それにあたり「visualstudio」というソフトウェアをダウンロードしておいた方が良いです。
visualstudioはこちらにダウンロード方法を載せているので良ければ参考にしてください。

スクリプトには以下のコードをコピー&ペーストしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Playercontroller: MonoBehaviour
{
    float x, z;
    float speed = 0.1f;

    public GameObject cam;
    Quaternion cameraRot, characterRot;
    float Xsensityvity = 3f, Ysensityvity = 3f;

    //角度制限
    float minX = -90f, maxX = 90f;

    // Start is called before the first frame update
    void Start()
    {
        cameraRot = cam.transform.localRotation;
        characterRot = transform.localRotation;
    }

    // Update is called once per frame
    void Update()
    {
        float xRot = Input.GetAxis("Mouse X") * Ysensityvity;
        float yRot = Input.GetAxis("Mouse Y") * Xsensityvity;

        characterRot *= Quaternion.Euler(0, xRot, 0);

        //Updateの中で作成した関数を呼ぶ
        cameraRot = ClampRotation(cameraRot);

        cam.transform.localRotation = cameraRot;
        transform.localRotation = characterRot;
    }

    private void FixedUpdate()
    {
        x = 0;
        z = 0;

        x = Input.GetAxisRaw("Horizontal") * speed;
        z = Input.GetAxisRaw("Vertical") * speed;

        transform.position += cam.transform.forward * z + cam.transform.right * x;
    }

    public Quaternion ClampRotation(Quaternion q)
    {

        q.x /= q.w;
        q.y /= q.w;
        q.z /= q.w;
        q.w = 1f;

        float angleX = Mathf.Atan(q.x) * Mathf.Rad2Deg * 2f;

        angleX = Mathf.Clamp(angleX, minX, maxX);

        q.x = Mathf.Tan(angleX * Mathf.Deg2Rad * 0.5f);

        return q;
    }


}

ここにはプレイヤーを操作するコードが書かれています。

スクリプトが完成したら左クリック長押しでヒエラルキーの「Player」に入れます(画像1番目の赤丸)
すると「Player」を選択した時に右の「インスペクター」を下にスクロールすると「Playercontroller」が表示されます(画像2番目の赤丸)

「Playercontroller」には「Cam」という項目がありますが、ここに「Player」に入れている「Camera」を左クリック長押しで入れます(画像1番目の赤丸)

これで真ん中上の再生マークをクリックしてみてください(画像2番目の赤丸)
するとゲームを実行することができます。

マウスで左右に視点を移動でき、キーの「W」「A」「D」「S」で移動できればOKです。

これで一つ目の解説は終了です。お疲れ様でした。

次の説明では銃のオブジェクトを使い、弾丸を発射できるようにしていきます。


                                               次の記事

                                        銃から弾丸を発射させる

TOPに戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です