はじめに
今回はCorgi Engineでステージ作成をやってみました。
引き続き、手探りながらも調べた内容をメモしています。
使用アセット
Corgi Engine - 2D + 2.5D Platformer
100+ Hand Painted Textures
地形テクスチャの置き換えに使用しました。
AllSky - 200+ Sky / Skybox Set
スカイボックスの置き換えに使用しました。とても多くのスカイボックスが入っているためPCの残容量に注意です。
Game Music Pack - SUITE
BGMの置き換えに使用しました。アニメ系、RPG系、ボス戦、スポーツ系等様々なジャンルの曲が入っています。
- はじめに
- デモシーンのステージ構成
- ステージ作成
- おわりに
作業環境
Unity 2019.4.16f1
デモシーンのステージ構成
全体の構成
今回もAssets/CorgiEngine/Demos/Corgi3D/NewCorgi3Dのシーンをベースに進めていきます。 NewCorgi3Dシーンを開き確認したところ下記構成になっていました。
LevelStart
ステージの開始地点の設定が行われています。
Transform のx, yにて開始点の設定
Checkpoint/Spawn のFacing Directionにてステージ開始時のキャラクターの向き
※Box Collider 2Dには深い意味はありません。Checkpointのスクリプトから参照されているようで削除はできませんでした。
試しに位置と向きを変更してみました。
シーンビューだと下記位置になります。
実行確認したところ、指定の位置で、左向きとなっていました。
Dust
環境用のパーティクル設定が行われています。
設定はパーティクルのみなので、無効化すれば表示されなくなります。
火山等熱いマップでは赤色にしたりと言った使い方ができそうです。
シーンビューのオレンジで色が付いている部分がDustのパーティクルです。
試しにパーティクルの設定を少し変更してみました。
パーティクルのサイズと色を変更しましたので指定通り反映されていること確認できました。
Ground
地面のオブジェクトで当たり判定を持っています。 特に変わって設定も無さそうですので、Box Collider等のColliderを設定することで判定してくれそうです。
上の細かいブロック状のものではなく、地面となる大枠のオブジェクトが格納されているようです。
地面のマテリアル変更
Groundのオブジェクトをクリック、Mesh Rendererに設定されているCorgi3DGroundMaterialをクリックします。
Corgi3DGroundMaterialのマテリアルをコピーし名前をGroundMaterialに変更しました。
コピーしたマテリアルをドラッグし、Ground/Mesh Renderer/Materials/Element 0に設定します。
マテリアルの設定を変更しますので、Inspectorを下までスクロールさせます。
ここでは下記設定に変更しました。
この設定でないとダメと言うことはありませんので好きな設定に変更してみてください。
Rim ColorをRGBA(255,255,255,0)に設定
DiffuseColorをHSVA(0,0,100,100)に設定
Diffuseにstone_03_p10_pngのテクスチャを設定
※100+ Hand Painted Texturesのテクスチャになります。
フリーのテクスチャでも、自前のテクスチャでも好きなものを設定する形で良いと思います。
テクスチャの用意がない場合はDiffuseColorを好きな色に変更し、変化を確認してみてください。
Groundのマテリアル/テクスチャを変更してみました。 このマテリアルを他のGroundにも反映させれば全部の地面を置き換えられます。
Stock
配置用のパーツの保管場所みたいです。
無効化状態となっていたので有効化し確認しました。
ここにあるオブジェクトをコピーしてマップに配置することでマップ作製ができそうです。
地面/壁用のオブジェクトの他、押せるブロックなどのギミックも格納されています。
CylinderGrey
ポールのオブジェクトです、Scale次第では電柱のような扱いにもできそうです。
コピーして配置した所問題なく当たり判定がありました。
壁としても使えて、壁蹴りも可能でした。回転させて斜めの床もできました。
Jumper3D
乗ると打ち上げられるギミックです。 (近くで見たら四角が二つで作られていました)
コピーして配置してみました。
Jumper3DのトップについているJumperのスクリプトでどれくらい飛ぶか設定ができました。
ジャンプ台を3つ並べてみました。
一つだけサイズを変えて、Jumper/Jump Platform Boost の設定を上げてみました。
BigJumpを空オブジェクトに入れて移動、拡大しているのは設定のし易さを考慮してになります。
深い意味があるわけではありませんので自分なりの設定方法でやる形で問題ありません。
実際に動かしたときの動画がこちらです。
値を大きくするとすごい跳びます。
試しに斜めに配置してみましたがジャンプする方向は真上で斜めには飛びませんでした。
point5xpoint5/1x1 Yellow - 4x1 Blue Thin
色付きのブロックで当たり判定があります。
Positionはもちろんのこと、Rotation, Scaleの変更もできます。
※Staticのついているオブジェクトのため、実行中に変更しようとしても反映されません。
45度の角度をつけると急斜面過ぎて歩いて登るには時間がかかります。
FallingPlatform
乗ると一定時間後に落ちる床です。
設定で最も重要なことはStaticが外した状態にするです。
実行時に動くオブジェクトのためStaticが付いていると正しく機能しません。
Falling Platformのスクリプトで落ち方の設定が行えます。
Time Before Fall ... このパラメータの秒数上に乗ったら落下します。
Fall Speed ... 落下する際のスピードです。大きいほど落ちるスピードが速いです。
Tolerance ... 落下判定用の値。変更する必要は無さそうに感じています。
PushablePlatform
押すことのできる箱です。重力の影響を受けます。
実行中に移動するオブジェクトのためStaticは外した状態にする必要があります。
Pushableのスクリプトにて箱の挙動の設定が行えます。
Push Speedを変更しても実際に押すスピードは変わりませんでした。
横、縦に2つ繋がっている状態では押すことはできませんでした。
Lights
シーンで使用するライトが格納されています。
試しにライトをOFFしてみたところ、裏側世界の表示風になりました。
Background
背景オブジェクトで当たり判定の設定はありません。
背景を非表示にした場合こうなります。
スカイボックスの変更
背景を非表示にしてもGameビューに雲の表示がありますが、これはスカイボックスの設定になります。
Unityメニュー → Window → Rendering → Lighthing Settings より設定が行えます。
Skybox Material に設定されているCorgi3DSkyboxMaterialの設定を変更することで差し替えることができそうです。
Corgi3DSkyboxMaterialをクリックするとProjectビューで対象のスカイボックスマテリアルが選択されます。
Corgi3DSkyboxMaterialをコピーして3DSkyboxMaterialと名前を変更しました。
Lighting設定のEnvironment/Skybox Materialに3DSkyboxMaterialをドラッグし設定します。
ここではAllSky - 200+ Sky / Skybox SetアセットのCooton Clouds Sunset 1を設定しました。
アセットストアでフリーのスカイボックスもありますのでお気に入りの一品を探してみてください。
スカイボックスを夜のものを使用したのでライトも少し暗くしました。
せっかくスカイボックスを変えたので今はBackgroundを無効化しています。
スカイボックスとライトを暗くした表示がこちらです。
GateToNextLevel
これはゴールです。プレイヤーがこの位置にきたらステージクリアとなります。
4つのコンポーネントがついています。
Finish Levelが重要で他は見た目と当たり判定になります。
Particle System
オレンジのパーティクルを出している部分。
Finish Level【重要】
ゴールの処理を行っているスクリプトです。
設定次第ではボタンに反応してゴールや、ゴール時に演出を出すといった事も可能です。
今回は最も重要なLevel Nameについて紹介させてください。
Level Nameに設定されているのはゴールしたら、次に切り替えるシーンの名前になります。
・次のステージのシーン名が設定されていれば、次のステージへ
・エンティングのシーン名が設定されていれば、エンティングへ
・マップ選択画面が設定されていれば、マップ選択画面へ
といった設定ができます。
ここに名前を書くだけではダメで、Build Settingsにシーンが登録されている必要があります。
Unityメニュー → Build Settings... より開けるWindowで設定を行います。
デモシーンで設定されているLevelSelectionも登録されています。
新規のシーンを追加する場合はAdd Open Scenesをクリックし、チェックが入っていることを確認してください。
追加したシーンを
切り替え先のシーン名をLevel Nameに設定します。
Box Collider 2D
ゴールとの当たり判定を取るためのコライダー。
見た目に合わせて調整します。
Box Collider 2DのEdit Colliderをクリックすると、Sceneビューに判定のサイズが表示されます。
見た目に合わせて、Offset, Sizeの設定を行います。
MMAutoRotate
実行し、良く見るとデモのゴールは回転しています。
Rotation Speedで回転速度が設定されています。このコンポーネントを無効化すれば回転は止まります。
Enemies
これは敵ですね。敵の動きや、敵のモデル変更については別の機会にまとめさせて頂きます。
ここでは敵の種類の紹介に留め、敵プレハブをコピーする形でステージ作成したいと思います。
デモシーンには5体の敵が配置されていました。
踏んだら倒せる設定になっています。
Ground(Terrain)
デモの初期状態では無効になっていますが、Terrainでのマップ作製もできそうです。
Terrainは大きなフィールドを作るときの仕組みです。
上の方にあるGroundを無効化し、Ground/Terrainを有効化してみました。
切り替えて歩く分にはできたのですが、Terrainの地形と当たり判定が取れているわけではありませんでした。
別の機会に追加調査したいと思います。
Items
コインや弾薬アイテムを入れる場所になります。
デモではコインのみの実装となっていました。
ゲーム画面右上に小さくスコア表示がありました。
コインで真新しいスクリプトはCoin, Auto Respawanの二つです。
Coin
Coin/Points To Addの値で入手するスコアを変更できます。
また、Pick Feedbacksに設定されているフィードバックオブジェクトにて入手時のパーティクルとSEの再生が行われています。
フィードバックオブジェクトは別の機会に詳細を調査したいと思います。
Auto Respawn
Respawn On Player Respawn...プレイヤーが死亡時にコインが再配置されるようになります。
Platforms
これはマップを形成している地形です。
Stockで紹介した内容と重複する内容はさけて、新しい項目のみまとめました。
Ladder3D
梯子です。
実際に使用する際にはこのプレハブをコピーして配置し、見た目を変更する形が良いと思います。
梯子の長さに合わせて当たり判定を調整したりします。
1xpoint5-ramp
三角形のブロックです。
RocketPlatform3D
上下する床(リフト)です。
RocketPlatform3Dに設定されているMovingPlatformで上下の移動を行っています。
MovingPlatformReactorはパーティクルを出しているだけでした。
Path Elementsがリフトの移動ルートの様です。
リフトを上に移動した後、右に移動するように設定してみました。
確認を早くするためMovement Speedの値を上げて早くしています。
確認したところ上に行った後、右に行くこと確認できました。
Cycle Optionの設定を確認してみました。
それぞれ下記を設定しています。
リフトの色 | Cycle Option | 概要 |
---|---|---|
黄色 | Back And Forth | 設定したパスで最後まで行ったら逆に動く 0 → 1 → 2 → 1 → 0 → 1 ... |
青色 | Loop | 設定したパスで最後まで行ったら先頭から再度動く 0 → 1 → 2 → 0 → 1 → 2 ... |
赤色 | Only Once | 一度最後まで行ったら停止 0 → 1 → 2 → 停止 |
黒色 | Stop At Bounds | 最後まで行ったら停止、次に動くときは反対に動くらしい。 別の設定と一緒に使用するらしい。この設定は良く分かっておりません。 |
Activationの項目を確認してみました。 Only Moves When Player Is Colliding...プレイヤーが乗っている間のみ動く。 Only Moves When Character Is Colling...プレイヤーか敵、NPCが乗っている間のみ動く。 Reset Position When Player Respawns...プレイヤーが死亡時に位置のリセットをするか。 Script Activated...有効な場合、他のスクリプトの影響のみ動作するようになる。 Start moving When Player is Colliding...プレイヤーが一度乗るまで動き出さない。
RetroPortalBlue/RetroPortalOrange
ワープになります。
Teleporterのコンポーネントはとてつもない項目数があり全部を載せることができず、、
下の方にDestinationと言う設定がありますので、ここに飛び先のオブジェクトを設定します。
他の項目については別の機会に調査致します。
ステージ作成
調べたことをもとに今回は雪をテーマにマップを作製してみます。
ステージ作成の流れ
順番は前後しても問題ありません。
自分なりのやり易い方法を見つけてください。
私の場合、雰囲気重視したいのでSkyboxの設定などから行っています。
- シーンの用意
- Groundの配置 ... マップの広さの目途を付けます。
- LevelStart/GateToNextLevel ... スタート地点、ゴール地点の設定を行います。
- GateToNextLevel遷移先の設定 ... 接続先は初めに設定するのが楽です。
- シーンの登録 ... BuildSettingsに追加したシーンを登録します。
- Platforms ... 大雑把に配置したあと、細かい部分の調整を行っていきます。配置した動かないオブジェクトはStatic設定にします。
- ギミック配置 ... ワープやリフトなど設定します。
- アイテム配置 ... コインなど設定します。
- 敵の配置 ... 敵を配置します。
- Skyboxの設定 ... ゲームは成り立ちますが雰囲気を重視したいため先に設定したい派です。
- Dustの設定(環境パーティクル)
- BGMの設定 ... BGMの設定をします。
- Backgroundの設定 ... 必要があれば背景の設定を行います。
- テストプレイ ... 動くようになってからは調整→プレイをひたすら繰り返していきます。
シーンのコピー
デモの構成をベースにステージ作成を行いたいと思います。
NewCorgi3Dのシーンをコピーし名前をStage1と変更しました。
Groundの配置
ScaleのXを大きく設定し平ペッタ感を薄くなるようにし、マテリアルも専用のものを用意しテクスチャを差し替えました。
使用したテクスチャは100+ Hand Painted Texturesのice_01_p15_pngを使用しました。
Rim ColorとDiffuseColorは完全な白色にしました。
LevelStart/GateToNextLevel
LevelStartをスタート位置に合わせて、GateToNextLevelをゴールの位置に合わせます。
GateToNextLevel遷移先の設定
接続先のシーンを設定します。他のシーンは用意できていないため現状はLevelSelectionのままとしています。
※遷移先のシーンはBuildSettingsで登録し、有効な状態である必要があります。
Platforms
専用のブロックパーツを用意
PlatformsBuleを丸々コピーし、名前の変更しました。
各ブロックは雪ブロック専用のマテリアルを用意し設定しました。
使用したテクスチャは100+ Hand Painted Texturesのsnowy_rock_01_p9を使用しました。
良く使うパーツはプレハブ化
この先っちょの三角形は多用したかったためプレハブ化し配置しました。
三角ふたつと、四角4つを配置しただけのプレハブになります。
橋の様なオブジェクト
途中橋のような形で使用したオブジェクトもScaleと専用のマテリアルを用意し設定したものになります。
YのScale値を小さくして板のような形にしています。
他とは別のマテリアルを設定したいため、新規マテリアルを設定しました。
使用したテクスチャは100+ Hand Painted Texturesのwood_17_p6を使用しました。
テクスチャが間延びしていたので、Tilingの設定も調整しました。
Static化
配置した動かないオブジェクトはStatic設定にします。 新しくコピー、配置した際に設定が抜けたものが混ざる可能性があります。
コピー配置
ここまで準備ができたら、コピー&移動を繰り返しマップの形を作成しました。
ギミック配置
今回はギミックの配置は行いませんでした。
アイテム配置
デモコインの位置を変更、コピーして配置を繰り返しました。
敵の配置
デモで用意されていたモンスターをそのまま流用しました。
バーバリアンは何となくイメージが違ったので消し、それとなく配置を行いました。
Skyboxの設定
デモシーンのステージ構成/スカイボックスの変更にてスカイボックスの設定方法を記載しています。 AllSky - 200+ Sky / Skybox SetのCartoon Base NightSky_Camを設定しました。
Dustの設定(環境パーティクル)
雪が降ったような表現は、デモの状態からパーティクルの発生方向を逆にして、発生位置を調整する形で行いました。
デモの状態から大きくは変更していませんが、雪っぽい感じは出せているのではないでしょうか。
BGMの設定
BackgroundMusicのオブジェクトを選択し、Background Music/Sound Clipの設定を行うことでBGMの変更ができます。
BGMの音量はGameManagersのオブジェクトを選択し、Sound Manager/Music Volumeから設定ができます。
イメージに近かったGame Music Pack - SUITEのrpg_18_loopを使用しました。
Backgroundの設定
Corgi3DCloud/Corgi3DHillそれぞれにマテリアルを用意し色味の調整を行いました。
確認/テストプレイ
一通り設定ができたので確認してみます。
おわりに
ステージ作成奥が深いですね。今回は角ばったパーツにテクスチャ差し替えで作成しましたが、Terrainを使って作成はできないか、もっとカッコイイマップはできないかなど模索していきたいと思います。
駆け足気味にまとめてしまったので、敵の設定、フィードバックについて、ステージごとのスカイボックスの変更の仕方なども順番にまとめて行きたいと思います。
今回調査を次回の機会とした項目も調査していきます。
確認頂きありがとう御座いました。