CorgiEngine-3-詰まったとこ、便利機能

シーン移動

シーン移動に便利な処理があるようで。

LoadingSceneManagerスクリプトを使うと、コーギーエンジンの用意しているシーンのローディング画面を経由して、目標のシーンに行けるようです。

ローディング画面にはロード状況を示すバーなんかがあったりします。そのシーンをいじるだけで自分だけの読み込み画面も作れてしまうという。

プレハブに3つの使いまわすべきシーンがあるようです。無理して使う必要もないですが。

  • LoadingScreen
  • StartScreen
  • SplashScreen

そのまま使っていいわけではなく、スプライトやアニメーションを変えてですが。LoadingScreenはLoadingSceneManagerからシーンを移動するとき、ロード画面として経由されます。

StartScreenはスタート画面として。

SplashScreenはゲーム開始時の開発者のロゴ画面なんかを表示するべきシーンって感じです。時間経過でStartScreenにフェードアウトしていきます。

会話イベント

DialogZoneという会話ウィンドウを表示するコンポーネントがあります。2d系のcolliderをつけて、オブジェクトにつければ、プレイヤーが前を通ると会話ウィンドウが表示されるシンプルですが使えそうなコンポーネントです。

colliderのisTriggerをオンにしておきます。

会話を進めるには、

キーボードではスペース

バーチャルパッドでは、進めたいボタンのMMtouchButtonコンポーネント内-ButtonPressedFirstTime()でInputManager.IntractButtonDownを呼び出します。

InputManagerはUICameraプレハブを使ったときは、UICameraが持っています。

これが分かんなくて会話作れなかった……。

2.5Dキャラクターを作るとき

キャラクターが奥の方向を向いてしまう。

よく考えれば、MeshRendererを持ったオブジェクトとCharacterコンポーネントを持ったオブジェクトを親子関係にすれば良いだけだった。

Demoの3Dオブジェクトをじっと見てたら分かった。

CharacterコンポーネントのCharacterAnimatorプロパティにキャラクターのアニメータを持ったオブジェクトをセットしておく。CharacterModelプロパティにキャラクターのオブジェクトをセットする。MeshRendererを持ったオブジェクトの親でも良い、のかな?

 

追記:

角度を右向きにするためにRotationYを90度変える。Rotationを変えたオブジェクトは、CharacterModelプロパティにセットしたオブジェクトの、直接の子である必要がある?

この辺をしっかりセットしないとうまく反映されない。

ちょっと浮く。
キャラクターがちょっと浮く。Demoをプレハブを見てみると、画像表示に関わるオブジェクトの高さを調整する必要がある。この場合も回転を調整したオブジェクトと同じトランスフォームをいじるべき、のはず。

背景

LevelBackGroundというコンポーネントをSpriteRendrerを持ったオブジェクトにセットするとカメラにそのオブジェクトがついてくる。Demoでは背景についているようです。

シーン選択画面(ステージ選択)

ステージを選択するときに役立つツールも入っていました。

マリオのようなステージ選択画面だとかステージの画像をクリックすると移動できるとか。

ただ、「ステージの解放に関わる処理(1-1をクリアしないと1-2に行けないとか)」は自分でスクリプトを書く必要がありそうです。画像をクリックするタイプのステージ選択画面ならDemoの中にあったので、それを使えそうですが。

「ステージクリアしたときに次のステージを開放する」というのが普通の流れだと思いますが、コーギーエンジンにはイベント(ゲームクリアとか敵を倒したときとか)を管理するクラスも入っています。

ゲームクリア時に呼び出されるイベントを使えば、実装の手間が省けそうです。

シングルトン

シングルトンなオブジェクトを作れるっぽいです。

public class SingletonClass : Moremoutain.Tools.Singleton<SingletonClass>{

       //クラス内容

}

こんな感じでSingletonクラスを継承すればコンポーネントとしてつけれるシングルトンなクラスを作れるようです。

呼び出すときは、上の例だと、SingletonClass.Instanceでアクセスできます。

キャラが死んでリスポーンするとき真っ黒になる

HealthコンポーネントのInitialColorプロパティ(インスペクタ―には表示されない)にフィールドの宣言時に白色をセットする。

3Dキャラを使うときになってしまう不具合かも。