2
2

More than 3 years have passed since last update.

GameCreator Shooterモジュール編

Posted at

はじめに

この記事はGameCreatorのShooterModuleについて紹介する記事です。GameCreatorについては前の記事・Unity Asset GameCreator 概要編をご覧下さい。
ShooterModuleはつい最近追加されたGameCreatorの新しいモジュールです。筆者もまだ触ってみた段階なので色々使い方が間違っている部分もあると思いますがご了承ください。

ShooterModuleは、GameCreatorにTPSやFPSなどのシューティングゲームに必要な機能を追加する拡張モジュールの一つです。武器のショットや弾の設定、また弓やスナイパーライフル、チャージショットの機能も追加出来ます。
ただこちらのアセットは敵のAIは触れられていないので(一応Combatという項目にサンプルがありますが)もし敵のAIを作りたい場合は、別のモジュールとしてBehaviorがあり、そちらを取り入れたほうがよいかなと思います。

必要なもの

ShooterModuleはGameCreatorのモジュールです。GameCreatorにはShooterModuleは付属していません。またShooterModule単体では動作しません。
- GameCreator
- Shooter Module

準備

  • GameCreatorをインストール
  • ShooterModuleをインストール
  • ShooterModule Exampleをインストール

ShooterModuleやShooterModule Exampleを入れる場合、Unityの上部メニューから[Game Creator]>[Module Manager]を選択してください。Module Managerのウィンドウが開きます。それぞれの拡張モジュールの部分にEnableボタンがあると思うのでそれを選択するとインストールが始まります。
image.png

銃を撃つのに必要なTriggerとActionを追加する

銃を撃つためには、少なくとも以下のTriggerとActionが必要です
- 武器(銃)をプレイヤーが装備する
- 弾を武器(銃)に込める
- ターゲットを狙う(エイムする)
- 武器(銃)から弾を放つ

武器(銃)をプレイヤーが装備する

OnKeyDownを押してConditionsを追加します
image.png

ConditionsにはIsArmedを追加します。
IsArmedは銃を装備しているかしていないかを判別するConditionsです。

銃を装備している場合は銃を戻す、銃を装備していない場合は銃を装備する処理を追加します。

  1. Conditions IfにIsUnarmedを追加
  2. ThenにDrawWeaponアクションを追加し、Revolerを設定
  3. ElseにHolsterアクションを追加

image.png

弾を武器(銃)に込める

武器に弾を込めるには、あらかじめ銃をプレイヤーが装備している必要があります。装備していない場合に武器を込めるアクションを実行しても、何も起こりません。武器の装備は1つ前の[武器(銃)をプレイヤーが装備する]項目を参考にしてください。

  1. OnKeyDown Actionを作り、Rキーを設定する
  2. Reload WeaponというActionを追加する

image.png
image.png

ターゲットを狙う(エイムする)

武器を装備し、弾を込めました。しかしもう1つやることがあって、それはプレイヤーの状態をエイム状態にしないと弾を撃てません。そのActionはWeapon Aimです。

  1. エイム用のトリガーとして、OnKeyDownOnKeyUpの2つのトリガーを追加し、KeyCodeをLeft Shiftに設定する
  2. OnKeyDownのトリガーに、Actionを追加し、エイムを開始する処理を追加
  3. OnKeyUpのトリガーに、Actionを追加し、エイムを終わる処理を追加

Aimを開始するActionの例
image.png

Aimを終了するActionの例
image.png

武器(銃)から弾を放つ

武器を構える、武器に弾が込められている、エイムしている状態が完了すれば、弾を撃つActionが実行できます。弾を撃つActionはWeapon Shootです。

  1. OnMouseDownトリガーを追加し、MouseButtonをLeftに設定
  2. Weapon ShootのActionを追加し、CharacterをPlayerに変更

image.png
image.png

弾の補充

また、弾を撃つ前に、1つ以上の弾をプレイヤーに与える必要があります。
追加するタイミングはシーンの開始時点OnStartにトリガーを追加して、ActionはGive Ammoを追加します。
Ammoは銃のタイプごとに指定できます。今はBullets(Revolverの弾)を指定しています。Operationには追加型の[Add]とその数値分セットする[Set]があります。
image.png
image.png

残弾数の表示

一応ここまでで弾を撃てますが、確認のために画面上に武器に込められている弾の数と残りの保持している弾の数が表示されてほしいところです。
image.png

これは、UnityのCanvasオブジェクトを作り、Ammo UICanvas Render Modeのスクリプトを追加します。
Ammo UIには、Ammo Name(弾の名前),Ammo In Clip(武器に込められている弾の数),Anmmo In Storage(保持している武器の総数)にそれぞれTextがアタッチされているゲームオブジェクトを設定します。
image.png

実行

Unityを再生すると、まず弾が補充されます
次にEキーを押すとリボルバーを装備し
Rキーを押すかマウスを左クリックすると装填中のモーションに入ります。
Left Shiftキーで武器をエイムし、左クリックでリボルバーのトリガーを引きます。
image.png

カスタマイズ

ここまではShooterモジュールのサンプルを参考にしてとりあえず弾を撃てるように動かしてみました。
アサルトライフルやマシンガンなどといった武器を追加したくなってきます。

使ったリボルバーの設定を確認してみます。ShooterModuleのサンプルから武器(Weapon)と弾(Ammo)の設定を確認します。

Revolver(武器)

マウスクリックするたびに6発の弾を放つ銃です。自作する場合は[Creator] > [GameCreator] > [Shooter] > [Weapon]から作成します。
image.png

Bullets(弾)

Revolver用の弾です。自作する場合は、[Creator] > [GameCreator] > [Shooter] > [Ammo]から作成します。
image.png

カスタマイズした武器と弾の作成

カスタマイズした銃としてマシンガンを作ります。モデルとなるアセットを用意します。今回はフリーなアセットMachine Gunsをプロジェクトにインポートして、これを使ってみます。

  1. [Creator] > [GameCreator] > [Shooter] > [Weapon]でマシンガンを作成(machinegun)
  2. [Creator] > [GameCreator] > [Shooter] > [Ammo]でマシンガンの弾を作成(machinegunbullet)
  3. MachineGunというPrefabを作成する。このPrefabには、Model(Machinegunの3Dモデル)とMuzzle(弾が発射される位置を空のゲームオブジェクトで設定)という子オブジェクトを追加する
  4. machinegunの[General]->[Default Ammo]をmachinegunbulletに設定、[3DModel]->[Prefab]をMachineGunに設定
  5. machinegunbulletの[General]->[Clip Size]を50に設定

MachineGunのPrefabは以下の通り。Muzzleゲームオブジェクトには、Weapon Muzzleを付けて、Radiusを調整しています。
image.png

MachineGunのWeaponの設定は下記の通りにしてます。一部Revolverの設定値と同じものを使ってます(本来はそれ用のアニメーションを用意できればよかったのですが、なかったのでRevolverのアニメーションステートを使いまわしてます)
image.png
弾の設定。いっぱい撃ちたいので[Clip Size]を50に設定してます。[Aiming]の[Crosshair]は今回なくても大丈夫です。(Noneに設定しても大丈夫だと思います)
また、マズルフラッシュ(弾を撃った時に銃口から出るエフェクト)を[Shooting]>[Prefab Muzzle Flash]に、撃った後の煙のエフェクトを[Shooting]>[Prefab Impact Effect]に設定できます。今回はRevolverと同じものを設定しています。
image.png

カスタムトリガーの作成

マウスをクリックしたら一定間隔ごとにActionを実行するトリガーを追加したいところですが
GameCreatorにはそのようなトリガーが用意されていないようなので、自前でカスタマイズしたトリガーを作り
そこからShootWeaponアクションを呼び出すようにしてみます。

カスタムトリガーの詳しい作り方や解説は公式ドキュメント-CustomTriggersをご覧ください。
[Create]>[GameCreator]>[Developer]>[C# Igniter]を選択すると、Igniterクラスが作られます。Igniterがやることは何をトリガーにしてActionを実行するかをExecuteTriggeで呼び出すだけです。下記に示したIgniterMouseHoldingLeft.csはマウスの左クリックでTimeOut間隔に弾を撃ち出すサンプルです。

IgniterMouseHoldingLeft.cs
namespace GameCreator.Core
{
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    [AddComponentMenu("")]
    public class IgniterMouseHolding : Igniter 
    {
#if UNITY_EDITOR
        public new static string NAME = "My Igniters/Igniter MouseHolding";
#endif
        public float TimeOut;
        private float mDeltatime = 0.0f;

        private void Update()
        {
            mDeltatime += Time.deltaTime;

            if (Input.GetMouseButton(0)) {
                if (mDeltatime > TimeOut) {
                    this.ExecuteTrigger(gameObject);
                }
            }

            if (mDeltatime >= TimeOut) {
                mDeltatime = 0.0f;
            }
        }
    }
}

カスタムトリガーをゲームオブジェクトに設定するのは、普段のTriggerと同じです。先ほどのコード上でstatic変数のNameに設定した名前がそのままカスタムトリガーの名前になります。
image.png
TimeOutを0.1に設定します。またActionにはWeapon ShootがあるActionを指定します。
image.png

image.png

最後に

この記事を書いている最中に、Youtubeに公式の解説動画が上がってました。こっちでは杖から魔法を出す方法について取り扱ってますが、各propertyについても解説してくれているので参考になります。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2