Unity:UFPSを使って遊ぼう!

こんにちは。ミラスタ社員のG.E(イニシャル)と申します。

私は趣味でUnityの勉強をしています。某「虹」と名前の付くゲームが好きで、私もこのようなFPSゲームを何とか作れないものかと調べて回りました。

そこで見つけたのが「UFPS」というUnityのAssetStoreで入手できるフレームワークです。イチから実装するのがダルいと感じた時に、以下のようなFPSで求められる必要な機能を簡単に拝借できます。

  • WASD移動、ジャンプ
  • 射撃
  • リロード
  • 武器切り替え
  • アイテム取得
  • 爆発物
  • リスポーン
  • ダメージ&体力

などなど。

今回は、そんなUFPSの紹介をほんの少しだけしたいと思います。これは日本語の情報がネット上で致命的に少ないという背景もあるので、多少でも役に立てれば幸いです。

用意するもの

  • Unity(執筆時のバージョンは2018 3.1f1 Personalですが、UFPSを利用するには2017.4.1以上必要です)
  • UFPS(https://assetstore.unity.com/packages/templates/systems/ufps-ultimate-fps-106748)

これをAssetStoreで購入した前提で説明を進めます。セール時に買おうね!

対象者

ほんの多少はUnity触ったことあるくらいの方

触れる範囲

セットアップ、射撃、インベントリ設定について解説します。

1. セットアップ

無事UFPSを購入したら、早速Unityを立ち上げます。Unity内でUFPSを使えるようにするためのやり方は複数ありますが、今回はプロジェクトを新規作成して、この時にUFPSを追加しましょう。

下記画面で、好きなプロジェクト名を入力し、「Add Asset Package」でUFPSを選択→Done→Create project順にクリックです。

いろいろと読み込んでもらうと(少し時間がかかります)、ProjectレイアウトにUFPSがインポートされているのが確認できると思います。

ここでUFPS->Content->Levels->CleanScene内の「UFPS_CleanScene」をダブルクリック!


これでUFPSのサンプルシーンを読み込めました。

(ちなみにLevelsフォルダ内にある「DemoScene1~3」、「SkyCity」も見てみると面白いよ!)

一番上のPlayボタン(再生ボタンみたいな三角)を押すと、この世界をとりあえず自由に動き回れます。

現状では、WASD移動とスペースバーによるジャンプ、マウスでの視点移動が可能です。

しかしこの人は何も銃を持ってません。

2. 射撃

まず、Hierarchyタブ上で、「Camera&Controller」を削除します。選択してDeleteキーです。

このタイミングでPlayボタンを押すと以下のようになり、何もできなくなります。

今までいた「Camera&Controller」というプレファブのおかげで操作できていたわけです。

次に、ProjectタブでUFPS->Content->Prefabs->Playersフォルダを見てみましょう。

AdvancedPlayer、Camera&Controller、Hero、HeroHDWeapons、SimplePlayerという5つの何か(プレファブと呼びます)が存在します。

このうちCamera&Controllerはさきほど削除したものと同じものです。

これらがどういうものか説明するとこんな感じです(間違っていたらごめんなさい)。

    • Camera&Controller

→視点移動、キーボードからの入力に合わせて移動だけができる。3Dモデルを持っていない。

    • SimplePlayer

→Camera&Controllerがもつコンポーネントに加え、基本的な射撃を行うためのスクリプトは搭載されているものの、インベントリシステムなどは持っていない。3Dモデルを持っていない。

    • AdvancedPlayer

→SimplePlayerがもつコンポーネントに加え、HUDやインベントリ、ゲーム内の物へインタラクトなどいろいろ便利なスクリプトが組み込まれているが、3Dモデルを持っていない。

    • Hero

→おっさんの3Dモデルを持っている。機能はAdvancedPlayerと同じと思われる。スマホ対応したいならこっちのほうが軽量。

    • HeroHDWeapons

→HDなおっさんの3Dモデルを持っている。機能はAdvancedPlayerと同じと思われる。PC向けで開発したいならこれでOK。

「そんな説明はいいからさっさと撃たせて!」という人は、HeroHDWeaponsを選択し、シーンタブ上の適当な所にドラッグアンドドロップしましょう。

そしてPlayボタンをクリック!

HUDが表示され、ハンドガンが撃てるようになりました!右クリックでの覗き込みも可能です!

ちなみに「5」キーを押すとナイフへ変更できます!

3. 武器切り替え

ここで、Hierarchyタブで、今操作したHeroHDWeaponsの構成をみてみましょう。

注目したいのは、「FPSCamera」オブジェクトに「1Pistol」、「 2AssaultRifle」、「3Shotgun」「4GrenadeThrow」「5Knife」という何かがいることです。

つまり、一応別な武器への切り替えが可能なわけですね。

ではどのように設定すればよいのでしょうか?

再びHierarchyタブ内で、今度は「HeroHDWeapons」を選択します。

すると、Inspectorタブ(私のエディタでは画面右側に表示されます)で、搭載されているコンポーネント一覧を見れます。

下部へスクロールします。

Vp_Player Inventoryという項目(正確にはスクリプト)が見つかるはずです。

内部の「Item Records」をクリックし、中身を見てみます。

ここで、プレイヤーが持っている武器と、その残段数を「Units」という項目で定義されています。

上部で設定されている「Pistol01(UnitBank)」では、Unitsに19が設定されていますが、先ほどPlayボタンで動かしたキャラクターの持っているハンドガンの残弾数が19発でしたね。

「Knife01(Item)」は近接武器であるため、Unitsは設定できません。

どちらか一方をダブルクリックすると、Projectタブ内でどのフォルダから読み込んでいるのか、強調表示して教えてくれます。

WeaponsHDフォルダ内にいろいろと確認できますが、これらは「ItemType」オブジェクトと呼ばれます。

Vp_Player Inventoryで使用する武器を設定するために使います。

試しに「AssaultRifle01」を選択し、Vp_Player Inventoryの「Drag an ItemType object here.」と書かれている部分へドラッグアンドドロップします。

これで、お察しの通りアサルトライフルを持てるようになりました。

Playボタンをクリック!

「2」キーを押すことで無事アサルトライフルが使えるようになりました!

気になる方は他の「GrenadeThrower01」「Shotgun01」も同様に試してみましょう。

最後に。

こうやっていろいろ設定したプレファブ「HeroHDWeapons」は、UFPSフレームワークが用意してくれたものを勝手に触り倒したものです。

保存する際はコピーしたほうが賢明でしょう。

そのためには、まずInspectorタブの上部で名前を変更します。

ここでは「MyFPSCharactor」としました。

するとHierarchyタブで表示される名前も変更されます。

あとは、Hierarchyタブ内のMyFPSCharactorをprojectタブの好きなフォルダにドラッグアンドドロップで新規に保存ができます(Prefabsというフォルダを作りました)。

この質問が出たら「Original Prefab」を選択します。

こうしてできたMyFPSCharactorは、もう自分だけのものです!

おわりに

長くなってしまいましたが、UFPSというUnityフレームワークの簡単な紹介でした。

しかし、UFPSの持つ機能は、冒頭で紹介したようにまだまだ沢山あります。

自分で作成したマップや、AssetStoreで買った建物を使って楽しみましょう。