ORK Framework 3で作ってみよう!(1)〜マップを作成する〜
ORK Framework 3”を使ってみる”、改め、”で作ってみる”シリーズ。
基本情報と目次は以下。
マップを作る
そろそろ中身を作っていきたい
まずはマップから
といっても、マップ自体はUnityの基本機能で作っている
3Dならオブジェクトを配置して、2DならTilemap機能を使って、Collider設定して、という感じ
ORKの機能としては、BGMの設定、マップ移動用のイベント設置、カメラの移動範囲の設定などする
マップ画像を配置する
サンプルには屋内のマップがないので、練習がてら作ってみる
新しいシーンを作って、Tilemap機能を使ってマップを作る
サンプル用のマップ画像がTilePalleteに登録済みなので活用する
各種グラフィックはCC0なので、そのまま使っていいらしい
Tilemapの使い方は適当にググって

マップに音楽をつける
マップに限らず、全てのシーンのおけるBGMの付け方
↑のチュートリアルではバトル画面やスタート画面のBGM設定もしてる
まずはMakinomで使う音源を登録する
Game > Musicから設定できる
新しいBGMを追加したり、ループを詳細に設定できたりするが、今回は登録済みのものを使う

HierarchyのメニューからMakinom > Music PlayerでシーンにMusic Playerオブジェクトを追加できる

Music PlayerコンポーネントのPlay typeからFade toを選択
再生方法の指定。既に再生中の音楽とクロスフェードさせる
BGMを止めたい時にはStopも指定できる
Music Clipから0: Townを選択
Townマップの音楽と同じなので、設定しなくてもいい

場所移動を設定する
ツクールでいうところの場所移動は、ORKではScene ChangerとSpawn Pointの2つがセットになっている
Scene Changerが移動元のイベント、Spawn Pointが移動先の座標になる
Spawn Pointはゲーム開始時の初期位置の指定にも使える
ツクールみたいにVector3で座標を直接指定することもできるので、Spawn Pointを使わない方法もあるが、使うのをオススメ
オブジェクトとしてシーンに表示されるから、視覚的にわかりやすい
迷路みたいな複雑なマップを作る場合も、移動先の調整がしやすそう
HierarchyメニューからMakinom > Scene Changer (2D)でシーンにScene Changerを追加する

Scene ChangerオブジェクトのTransformを調整
入り口の前あたりへ移動
Scene ChangerコンポーネントのTarget SceneにTownと入力
移動先のシーン名を指定、綴りを間違えないように
Position TypeからSpawn Pointを選択
Spawn IDのValueに1を入力
Townには既にID:0のSpawn Pointが設置されている
町の入り口にあたる
後で家の前に設置するので予約

デフォルトだとCircle Collider 2Dがついているので削除して、Box Collider 2Dを付け直す
Box Collider 2DのIs Triggerを有効化し、Sizeを調整
Colliderの範囲に入ると場所移動するようになる
地形に合わせて広めに設定したり、狭くもできる

次に屋内マップのSpawn Pointを設置
HierarchyメニューからMakinom > Spawn PointでシーンにSpawn Pointを追加する
2つ作っておく
追加した時に自動でIDが割り振られる
コピペだとIDもそのままなので注意

Spawn PointコンポーネントのUse Rotation: Zを有効化
これでSpawn Pointの向きと移動時のキャラクターの向きが一致する
Z=0だと右、90だと上、180だと左、270(-90)だと下に向く
移動時に逐一向きの指定をしなくていい
Spawn PointオブジェクトのTransformを調整
ID: 0はドアの前に、ID: 1は部屋の真ん中に移動
ID: 1はゲーム開始時の初期位置に使う予定
ドアの前はRoationをZ=90、部屋の真ん中はZ=-90に設定

次にTownに家に出入りする時のScene ChangerとSpawn Pointを設置
同じ要領で家の前にScene ChangerとSpawn Pointを設置
Spawn PointのIDが1になっていることを確認
Scene ChangerコンポーネントのStartSettings > Interaction > Start TypesのInteractionを有効化
StartSettings > Trigger > Start TypesのTrigger Enterを無効化
これでドアを調べると中に入る、という処理にできる
めんどくさいならTrigger Enterのままでもいい
ドアの前を通っただけで入室しないように範囲の設定に気を付ける
この設定だとドアを開けて入るモーションは作れない
ツクールではお馴染みだがORKだと一手間かかりそう
そもそも半開きのドアのグラフィックがないので、そこから準備が必要
イベント設置の際にできるかどうかは調べてみる

カメラの移動範囲を設定する
カメラはプレイヤーキャラが画面中央に来るように追従する設定になっている
マップの端までくると画面外が見えてしまう
画面外が見えないようにマップ端を広めに作ってもいいが、面倒な時もある
狭いマップでいちいちカメラが動き回るのも煩わしい気がする

Camera Borderを使ってカメラの移動範囲を制限する
空オブジェクトを作成し、BoxCollider2DとCamera Borderコンポーネントを追加
BoxCollider2DコンポーネントのIs Triggerを有効化
マップが収まるぐらいのサイズに調整

ちなみに、Camera Borderは複数個設置できる
Townマップは橋を挟んで右側と左側にCamera Borderを設置している
橋を渡ると区画が切り替わるような演出になる

GameStarterを追加する
ORKのシステムでゲームを起動するのに必要なもの
これがないとそもそも動かない
じゃあ最初に入れとけよ
ORK Framework > ORK Game Starterで追加

ORK Game StarterコンポーネントのStart Gameを有効化
これを入れとかないとプレイヤーキャラが配置されない
外しとく意味はあるのか?

最後にBuild Settingで屋内のマップシーンを追加しておく
じゃないとシーン移動でバグる
テストプレイで確認
