Unityを使って半日でFPSゲームを作ってみよう

19/02/03 16:05:54     19/02/17 20:05:49

fpsゲーム画面

Unityを使えば初心者でも比較的簡単にとりあえずゲームの形に持っていくことが可能です。ゲームと言えばその他のシステムに比べても複雑な動きをしていますが、Unityの機能は大まかな動きはまかなってくれているということです。

なかでも特にAssetはゲームに必要な土台を担っており、FPS用のアセットも多数用意されています。そこでこのページでは、Assetを使ってFPSゲームを作る方法を紹介します。

Standard AssetsのFPSControllerを設置

Unityには標準でStandard Assetsというアセットが入っています。標準で入っているので、新たにアセットストアからインストールする必要はありません。ただし削除してしまっている場合もアセットストアから無料でインストールできるので、問題はないでしょう。

このStandard AssetsにはFPSControllerというFPSゲームを作るのに必要な機能が入っています。このFPSControllerを使用すればプログラムを書かなくてもFPSゲームに必要な機能を作れます。

ただし、細部の実装はもちろんアセットの機能だけでは作れないので、プログラミングが必要です。FPSControllerを設定する方法は以下です。

Standard Assets → Characters → FirstPersonCharacter → Prefabs →FPSController

この順番にドラッグ&ドロップしていきます。RigidBodyFPSControllerとCharacterControllerのどちらでもキャラクターを動かすことができますが、これについてはどちらを使用しても問題ありません。

FPSControllerの詳細はここですべて解説しても間延びするため、直感的に操作してみてわからない部分を調べるのがおすすめです。

Standard AssetsにEthanを取り付ける

Standard AssetsのEthanを使用することで、キャラクターに当たり判定や動かす機能を取り付けることができます。さらにキャラクターに対してはCharacterControllerを取り付けることが可能で、そこからインスペクタ情報を編集できます。

またここからスクリプトを書き換えることで詳細な動きを設定していくことができますが、GUIからの設定だけでもとりあえずの形にはなります。半日でどこまでいけるかはわかりませんが、初心者の場合GUIをいろいろいじったり調べたりしているだけで半日程度経つかもしれません。

スクリプトをまったく書かなくても一応ゲームにはなるので、プログラミングスキルがなくても一応動くものが作れます。

スクリプトでキャラクターを移動させる

キャラクターの移動はGUIでも単純なものなら実装可能ですが、スクリプトで作りこんだ方が細部にこだわれる上に慣れると速いです。イメージするためのサンプルコードを紹介しますが、以下のようになります。

using UnityEngine;
using System.Collections;

public class MyChara : MonoBehaviour {

    private CharacterController cCon;
    private Vector3 velocity;

    void Start () {
        cCon = GetComponent<CharacterController>();
    }

    void Update () {
        if(cCon.isGrounded) {
            velocity = Vector3.zero;
            velocity.x = Input.GetAxis("Horizontal");
            velocity.y = 0;
            velocity.z = Input.GetAxis("Vertical");

        }
        velocity.y += Physics.gravity.y * Time.deltaTime;
        cCon.Move(velocity * Time.deltaTime);
}

キャラクターコントローラーの設定、速度設定、重力計算、といった処理を行っています。

アニメーションの設定

上で紹介した流れでは、主にキャラクターの設定を行いました。次に、アニメーションの設定を行います。アセットフォルダに入っているAnimator Controllerを使用しますが、Create→Animator Controllerからすぐに準備できます。

アニメーションもGUIとスクリプトの両方から作っていきます。スクリプトの例は以下です。

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {

    private CharacterController characterController;
    private Vector3 velocity;
    [SerializeField] private float walkSpeed;
    private Animator animator;

    // Use this for initialization
    void Start () {
        characterController = GetComponent <CharacterController> ();
        animator = GetComponent <Animator> ();
    }

    // Update is called once per frame
    void Update () {
        if(characterController.isGrounded) {
            velocity = new Vector3 (Input.GetAxis ("Horizontal"), 0f, Input.GetAxis ("Vertical"));

            if(velocity.magnitude > 0.1f){
                animator.SetFloat("Speed", velocity.magnitude);
                transform.LookAt(transform.position + velocity);
            } else {
                animator.SetFloat("Speed", 0f);
            }
        }
        velocity.y += Physics.gravity.y * Time.deltaTime;
        characterController.Move(velocity * walkSpeed * Time.deltaTime);
    }
}

コンポーネントの設定やスピードの設定を行っています。

アセットを使用すれば短時間でもFPSの基本的な機能を作ることができます。少なくとも、キャラクターとアニメーションの設定だけなら一応ゲームの形にできます。なぜなら、プログラミング知識がまったくなくてもGUIだけで形を作れるからです。

ただしキャラクターやアニメーションの設定も詳細を作るにはプログラミングが必要で、完全初心者の場合コードを理解するのにある程度時間が掛かります。また今回は触れませんでしたが、キャラクターのジャンプ、向き変更、武器の設定、エフェクトの設定、といったことを行うともっと時間が掛かります。

まずは直感的なGUI操作と簡単なスクリプトからはじめ、それができたら徐々に機能拡大していくのがおすすめです。最初からすべての流れを正確に把握するのは難しいので、できるところからどんどん手を動かして、できなかった、よくわからなかった、という部分のみ情報収集すると良いでしょう。

【Unity関連記事】
▼Unityの基礎編
・ 【unityのフリーランス求人・案件情報】エンジニア需要や開発単価、未経験でもいける?
・ 【unity入門】ゲーム開発だけじゃない、Unityで出来ること

▼Unityの外部アセット、リソース編
・ UnityでMMDモデルを自由自在に動かしてみよう!
・ Unity adsを使って簡単に広告を導入しよう
・ Unityのアセットストアの上手な使い方
・ Unityで作られているARアプリをまとめてみました

▼Unityのコンポーネント編
・ Unityのrigidbodyを使って物理演算を導入してみよう
コードを使わずにUnityでキャラ追従のカメラを作る方法
・ Unityで簡単にアニメーションを作成する方法をまとめました
・ Unityでオブジェクトを回転させる方法をわかりやすくまとめました
・ Unityのtransformを使ってオブジェクトの座標や回転を操作する
・ Unityのアニメーターを簡単に作成する方法まとめ
・ UnityのShaderの解説と使い方まとめました
・ Unityで「当たり判定」(衝突判定)を付ける方法
・ Unityのgetcomponentの上手な使い方と使用時の注意点まとめ
・ Unityでキャラの移動を制御する方法まとめ
Unityのraycastを使って出来ることをまとめました

▼Unityのデフォルト機能、ゲーム製作編
blenderで作ったオブジェクトをUnityで組み込んでみよう
・ Unityのコルーチンとは?使い方をまとめました
Unityで作られているRPGゲームを作るための6つのステップ
・ Unityのパーティクルを使って演出できるエフェクト例
・ UnityでのUIデザインの基礎をまとめてみました
Unityのcloud buildの便利な点をまとめました
・ (この記事)Unityを使って半日でFPSゲームを作ってみよう

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する