はじめに
TopDown Engineを広めたく簡単なゲーム作成手順をまとめました。
このアセットは見下ろし型のゲーム作成に必要な処理が一通り揃っており、他のアセットを組み合わせることで自分だけのゲームを作り上げることもできます。
この記事をみて私もやってみようかなって方がいてくれてら幸いです。
開発環境
Unity 2020.3.16f1
使用するアセット
TopDown Engineは必須ですが、その他のアセットは別のアセットを使用しても大丈夫です。追加アセットはモデル、背景や音を使うために使用しています。
TopDown Engine
POLYGON Sci-Fi Space - Low Poly 3D Art by Synty
高価なアセットですが、見合う内容が入っています。宇宙対戦物向けの戦闘機やステージ作成に必要なモデルが一通りそろいます。(UIやエフェクトは入っていません。内容物はアセットストアにてご確認ください)
戦闘機のモデル、背景、ステージ作成に使用します。
Game Music Pack - SUITE
カジュアルからシューティング、RPG向けなど様々なBGMが入ったアセットになります。アセットストアから試聴もできます。
BGMの設定に使用します。
紹介で作成するゲームの仕様
ファイター(戦闘機)を操作し、目的地点にたどり着いたらゲームクリアとなります。
敵が存在しプレイヤーを発見すると突撃してきます。敵はプレイヤーの攻撃で破壊することができます。敵に当たったらゲームオーバーとなります。
プロジェクト作成
Unityのインストール
Unity Hubより、最新の推しUnityをインストールしました。
プロジェクトの作成
新規作成ボタンを押します。
※特定のバージョンのUnityを指定して作成したい場合は新規作成ボタンの横の▼から選択できます。
今回のプロジェクトはテンプレート「3D」でプロジェクト名は「TopDownFigther」としました。
プロジェクトが作成されれば大丈夫です。
パッケージ(アセット)の追加
TopDown Engineの追加
メニュー「Window」→「Package Manager」を選択します。
Pakagesを「My Assets」を選択の上、対象のアセットを探します。
TopDown Engineを選択後、importを押します。
※見つからない場合は検索や、UnityAssetStoreからUnityで開くなどを選択し探してください。
設定を上書きしてよいか確認が入るのでImportを選択します。
内容を翻訳ツールで確認しました。
Install/Upgradeを選択しました。
Importを選択します。
しばらく待ちます。...私のPCだとだいぶかかりました。
インポート終了後に、挨拶のウィンドウが出てきました。
ボタンから公式ドキュメントが開けました。
ドキュメントの説明はここでは割愛致します。
ウィンドウを閉じます。
これでTopDownEngineを追加することが出来ました。
他のアセットも追加
他の使用するアセットも追加してください。
今回の紹介では下記アセットを追加しました。
TopDownEngineデモの確認
TopDownEngineには数多くのデモが入っています。
LevelSelectionと言うデモシーンから、各デモへアクセスができるようになっています。
色々なデモがありますので実行して確認してみてください。
初期設定の基本的な操作方法
WASD ... 移動
F ... ダッシュ
Space ... ジャンプ
I ... 装備メニュー
マウス ... 照準の方向
マウス左 ... 弾の発射
※サンプルによってジャンプができないものや、弾が発射できないものもあります。
ゲーム画面の作成
ゲームシーンの作成
ベースとなるシーンをもとに作成していきます。
①Assets/TopDownEngine/Demos/Minimal3D/MinimalScene3Dをコピーします。
②Assets直下にTopDownFighterと言うフォルダーを作成しました。
③コピーしたMinimalScene3DをGameSceneに名前を変更しました。
GameSceneの確認
この画面をベースに作成していきます。
気になるところは多々あると思いますので早速更新していきます。
自機の変更
このキャラクターを戦闘機に置き換えます。
プレイヤーの設定はLevelmanagerのPlayer Prefabsで行われています。
確認したところMinimalCharacterのプレハブがこの青いキャラクターのようです。
Assets\TopDownEngine\Demos\Minimal3D\Prefabs\PlayableCharacters\MinimalCharacter をコピーし、TopDownFighterのフォルダへ移動させ、名前をPlayerCharacterと変更しました。
PlayerCharacterのプレハブを開きます。
追加アセットの中から戦闘機のプレハブを使用します。
Assets\PolygonSciFiSpace\Prefabs\Vehicles\SM_Ship_Bomber_01
※別のアセットを使用しても問題ありません。モデルに合わせて当たり判定位置の調整を行ってください。
位置・サイズ感の設定
サイズ感がだいぶ違っていたので調整と、Y軸0が地面となるように設定されていたので位置の調整を行いました。
分かり辛いですが、地面ぴったりではなく少し浮かせた状態にしています。
歩くタイプであればぴったりで良いと思います。戦闘機なので少し浮いてた方が良いかなと思い少し浮かせた次第です。
武器装備位置の設定
WeaponAttachmentを武器の装備(弾が出る位置)に合わせて調整します。
当たり判定の設定
PlayerCharacterを選択し、Character Controllerコンポーネントから当たり判定位置の設定が行えます。機体より少し小さめに設定を行いました。
最後に元の青いキャラクターを削除し、プレハブを保存します。
LevelManagerへプレイヤープレハブの設定
設定したPlayerCharacterをLevelManagerコンポーネントのPlayer Prefabsに設定します。
実行して確認
キャラクタ―が置き換えられました。
移動はWASDで行えます。
ダッシュはF, ジャンプ?はSpaceになります。
記事の紹介
CorgiEngineでの紹介となりますが、人型モデル差し替えについて紹介しています。
UIアイコンの変更
アイコンを自作したものに置き換えます。
アイコンUIの設定はMinimal3DCameras/UICamera/Canvas/HUD/HealthBar/AvatarFrontにて行われていました。これのImage設定を変更すれば変えられそうです。
サイズは256x256のPNGで用意したいと思います。
画像ツールで頑張って仕上げたい所ではありますが、今回はUnity上でそれらしい状態にしてキャプチャし、Windows標準のPaintで編集し用意しました。
上の項目で用意したPlayerCharacterプレハブに背景用のCubeを用意し設定したあとに画面をキャプチャしました。
余談ですが、アセットでキャラアイコンを探し設定する形でも良いと思います。
キャプチャ後にサイズを256x256に変更、白枠だけ付けてPlayerIcon.pngで保存しました。
Unityに作成したアイコンを追加します。
TopDownFighter以下に追加しました。
PlayerIconをクリックし、Texture TypeをSprite (2D and UI)に変更し、Applyで反映させます。
AvatarFrontを選択し、Source Imageを用意したスプライト画像に置き換えます。
実行して確認
アイコンが変更されました。四角いアイコンとなっていますが、画像を丸型にすれば、丸くすることができます。今回は割愛致しますが、HPバーもカッコイイ素材に置き換えたくもなります。HBバーは HUD/HealthBar 以下のオブジェクトを更新することで変更できます。
弾の発射
TopDownEngineでの弾の発射は武器を装備して弾を撃ち出す形で行います。
武器を装備するためには装備枠が必要となります。
プレイヤーの装備枠設定を確認
TopDownFighter/PlayerCharacter プレハブを開きます。
PlayerCharacterを選択し、Character Inventoryの設定を確認します。
SuitMainInventoryと設定されてました。
※設定名とこの後に出てくる装備枠の名前が一致していれば好きな名前で問題ありません。
装備枠の用意
シーンのManagers以下に Inventories フォルダを作成します。
プレイヤーのCharacter Inventoryに設定されている装備枠の名前のオブジェクトを作成します。
SuitMainInvetory, SuitWeaponInventoryを作成します。
武器の用意
デモで用意されているショットガンを改造し使用します。
Assets/TopDownEngine/Demos/Loft3D/Prefabs/Weapons/WeaponsAmmoBased/LostShotgunWithAmmo を、コピーしTopDownFighterへ移動、名前をWeaponShotgunとしました。
WeaponShotgun のプレハブを開き
Shotgunのモデルを非表示に(削除でも問題ありません)
Projectile Weaponの
・Magazine / Ammo Consumed Per Shot を0にし、弾切れすることを止めています。
・Position / Weapon Attackment Offset は機体の砲撃位置に合わせたいためここでは0を設定しています。
・IK は戦闘機に左手、右手の概念がないため値をクリアしました。
PlayerCharacter の Character Handle Weapon / Initial Weapon にShotogun Weaponをアタッチさせます。Initial Weaponに設定した武器は初期装備武器として機能します。
実行して確認
弾が発射できるようになりました。設定次第で武器の切り替えや弾数の制限なども行うことができます。デモにShotgun以外の武器も用意されているので変更するだけでも武器が切り替えられます。
記事紹介
武器の設定について下記記事で紹介しています。
CorgiEngineを使ったものですが設定項目は同じです。
敵の作成
テンプレートから用意
Assets/TopDownEngine/Demos/Loft3D/Prefabs/AI/LoftPatrolAndPathfinderAIをベースに作成します。コピーしTopDownFighterフォルダへ移動させ、EnemyPatrolAndPatfinderAI に名前を変更しました。
モデルの設定
EnemyPatrolAndPatfinderAI を開きます。
元となったプレハブで使用しない部分を無効化します。
オブジェクトやコンポーネントは削除でも問題ありません。
・Dude ~ Shoesを無効化
・SuitModel の
Scale を1に設定
Animatorを無効化
Weapon IKを無効化
Assets\PolygonSciFiSpace\Prefabs\Vehicles\SM_Ship_Stealth_01 プレハブを配置しました。サイズ感を合わせるため、それぞれ0.15としました。
色を変更するためMesh RendererのMaterialsをPolygonScifiSpace_Material_02_Aに変更しました。
PolygonSciFiSpaceにはあらかじめ何色か用意されています。
破壊されたときの表現
破壊されたときの表現が血しぶきになっていたため、既存で用意されている。
DeathFeedbackのParticles PrefabをLoftExplosionに変更しました。
※パスは Assets\TopDownEngine\Demos\Loft3D\Prefabs\Props\LoftExplosion にあります。
敵に当たったらダメージ
今回はシンプルに敵にあったら即死という設定で行います。
EnemyPatrolAndPathfinderAI を選択し、DmageOnTouch と BoxCollider を追加してください。
敵を配置
Level以下にEnemiesと言う空のオブジェクトを作成し、用意した敵プレハブを追加しました。
Hiearchy上から敵プレハブを選択するとSceneビュー上に番号と線が表示されます。
これがプレイヤーを見つけていない場合の移動経路になります。
MMPathから経路は変更することができます。
ナビメッシュの用意
敵が追跡の移動を行うためにはあらかじめマップ情報をNavmeshとして登録しておく必要があります。
Navmeshオブジェクトをからで追加し、NavMeshSurfaceを追加してください。
設定は画像に合わせ行ってください。
Include Layersの設定はObstacles / Ground を対象にしています。
設定が終わったら「Bake」を押します。
Bakeはマップの配置を変えるたびに行う必要があります。
実行して確認
敵に当たったら即死が確認できました。敵の当たり判定は気持ち大きめにすると動画の感じになりました。BoxColliderの各設定を2.2に調整しました。
それぞれの値は好きに変更して頂いて自分だけの設定を行ってください。
テンプレートとなる動きを簡単な動きをする敵にしましたが、弾を撃ってくる敵も用意されています。敵側からも撃ってくるとゲームとして難しくなりますが、撃ち合いは楽しいと思います。
敵の数や移動パスのルートを変更しても面白いと思います。
敵は撃って倒すこともできます。
記事紹介
AIの設定について下記記事で紹介しています。
CorgiEngineを使ったもので用意されている思考がTopDownEngineとは違いますが考え方は同じになります。
ゴールの配置
到達したらゲームクリアとなるゴールを設定します。
Minimal3DGateToNextLevelを配置することでゴールの設定が行えます。
※Assets\TopDownEngine\Demos\Minimal3D\Prefabs\Props にあります。
設置し位置の調整を行いました。
遷移先のシーンにクリア画面や次のステージ、ステージ選択のシーンを設定することで好きなようにゲームを拡張できます。
設定は GoToLevelEntryPoint の LevelName で行います。
新規にシーンを作成したところへ飛ぶ場合は「BuildSettings...」シーン追加を忘れないようにしてください。
実行して確認
光に触れたらシーンが変更されることが確認できました。
クリアシーンを用意して遷移させればゲームの形になります。
記事紹介
シーンの追加方法についてまとめています。
こちらの記事もCorgiEngineでの紹介となりますが設定方法は同じになります。
BGMの設定
BGMの設定
SoundManagerにBackgroundMusicコンポーネントを追加し、SoundClipに設定するとBGMが再生されるようになります。
Game Music Pack - SUITE のshooting_01_loop を設定しました。
実行して確認してみてください。
記事紹介
BGMの他、SEの設定方法についてもまとめています。
ゲームの調整
プレイヤー初期位置
初期位置はLevelManagerのInitial Spawn Pointにて設定を行います。
実行して確認すると位置が変わっていることが確認できます。
この先の改造
この先の処理として
・画面を追加してみる タイトル画面 / クリア画面を用意し遷移するようにしてみる。
・ステージを拡張してみる、マップの広さを拡張したり、障害物を置いてマップの形を変えてみる。
・敵の種類を増やしてみる。HPが多い敵や、動きの速い敵など種類を増やしてみる。
・武器の種類をふやしてみる。
・ステージをこだわってみる。
考えるだけでも色々な追加要素が考えられます。
ぜひ自分だけの処理を追加してオリジナルゲームを作成してみてください。
おわりに
最後まで見て頂きありがとう御座います。
だいぶ駆け足気味の記事となってしまい語れないところが多くありました。武器の設定やAIの設定やギミックなどについても語りたい気持ちがいっぱいです。
なるべく手順を飛ばさずまとめたつもりですが、記事内容で分かり辛い点が御座いましたらTwitterからご連絡お願いします。
今後も時間をみて記事を書いていきたいと思います。
TopDownEngineにて制作物紹介
エフェクト系のアセットも追加し宇宙で対戦するゲームを制作中です。
おはようございます☀️
— のぼる@ゲーム制作中🚀 (@ikeball3) 2021年6月23日
朝活にて新規武器「ミニミサイル」を作成しました🚀
中距離向けの武器で、ホーミングするため少し離れたところから狙い打ちができます🔫
威力が低く、弾がぶれるため近距離戦は苦手です🎮
武器の種類増えてきました💪
( #朝活 | #Unity | #gamedev | #indiedev ) pic.twitter.com/mX9Wz8nAjN
今回紹介はできていませんが、2.5Dでゲームを作成することもできます。
おはようございます🌞
— のぼる@ゲーム制作中🚀 (@ikeball3) 2021年8月17日
朝活にて、Unity記事の作成を進めていました📒
TopDownEngineの記事にしようとサンプル作成を行っています😇
2D / 3Dとちらの路線で記事を書こうか考えています🐧
3Dであれば宇宙対戦物の素材使っちゃいます🚀
( #朝活 | #Unity | #gamedev | #indiedev ) pic.twitter.com/bHvOgdVH4X