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

Corgi Engine

シーン移動

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

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

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

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

  • LoadingScreen
  • StartScreen
  • SplashScreen

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

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

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

会話イベント

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

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

会話を進めるには、

キーボードではスペース

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

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

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

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

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

回転はCharacterコンポーネントのCharacterModelに設定してあるオブジェクトを回転させているみたいです。

CharacterModelオブジェクトの子に3Dモデルを入れるようにする。

このとき、プレハブから3Dモデルの向きは右を向けておくようにする。

DEMOのコーギーくんも、X軸に対して平行な向きになっていました。

下の画像みたいに向きが横を向いてないと、回転したときに奥を向いたりしてしまう。

元の位置から180度回転させるだけなので当然ですが。

追記:

角度を右向きにするためにRotationYを90度変える。 キャラクターの3DモデルはこのCharacterModelに設定したオブジェクトの子にします。

DEMOのモデルもModelContainerというオブジェクトの中に3Dモデルを入れています。 ModelContainerという名前の通りですね。 「Character」コンポーネントのCharacterModelは、モデルの入れ物だよというCorgiEngineからのメッセージなんだと思います。

それと、CorgiEngine6.1では3Dモデルの回転をゆっくり回すような処理が追加されていました。

2Dのスプライト画像では画面を瞬間で切り替えるだけですが、3DモデルではRotateModelOnDirectionChangeを使って、じっくり回した方が見た目がよいかも。

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

背景

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

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

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

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

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

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

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

シングルトン

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

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

       //クラス内容

}

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

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

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

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

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

カメラコントローラー

メインカメラにつけるカメラコントローラーコンポーネントがあります。

プレイ中にMinimumZoomやZoomSpeedを変えればカメラの位置が移動します。

LevelManagerのステージ範囲を設定してあり、かつ、MainCameraのプロジェクションがオーソグラフィ(平行投影)だったら、ステージ範囲からカメラがはみ出すことがありません。

そんなわけでメインカメラはパースペクティブにしない方がよさそう。

カメラの角度も横から真っすぐにしとかないと色々おかしくなってしまいそう。

2.5Dキャラを使うときは視点を変えて立体っぽく見せたくなるかもしれないけど、ちょっと表示がおかしくなる。

真横からのみじゃないとうまくいかないかも。

コメント

  1. LC より:

    2.5Dキャラクターを作るとき
    キャラクターが奥の方向を向いてしまう。
    の項目のところで同じく奥を向いてしまい悩んでいます。

    もう少し詳しい内容が分かれば教えていただけないでしょうか。
    よろしくお願いします。

    • げんとめ より:

      コメントどうもです。
      申し訳ないんですが古い話なんでいまいち覚えてないんです。
      ですが、最新のコーギーエンジン(バージョン6.1)を開いてみてちょっと調べてみました。
      で、一応記事も訂正しました。

      奥を向いているということなら、
      1:キャラクターの3Dモデルを「Character」コンポーネントの”CharacterModel”に設定してあるオブジェクトの子にしているか。

      2:プレハブで見たときに、キャラクターがちゃんと右を真っすぐ向いてるか
      を確認してみると良いかと思います。

      他にも原因があるかもしれませんが、実際に見てみないと私では分かりかねます。申し訳ないですが。

      それと、この記事の時のCorgiEngineにはなかったんですが、最新のCorgiEngine(Ver6.1)には「Character」コンポーネントに「Rotate Model On Direction Change」プロパティがインスペクタにあります。3Dモデルを使うんならここを設定しておいた方が良いかと。もうしてるかもしれませんが。

      うまくいくことを願っています。

      • LC より:

        早速の記事の追記ありがとうございます。

        なんとか奥を向いた状態から右を向いて操作できるようにはなりました。
        行った操作としては、
        VroidをプレイヤーとしておりCharavterContainerにあたるものがなかったため、
        CreateEmptyを追加・リネームしてすべてその子に移動、CharavterContainerのRotation Yを変更することで右を向くようになりました。

        ただ常に右方向を向いてしまい、左に移動しても右を向いてムーンウォークしてしまう状態となってしまいました・・・
        右に移動するときと左に移動するときでアニメーション自体は左右反転しているようなので、
        しばらくそこの設定を探すことになりそうです。

        • げんとめ(管理人) より:

          CharacterContainerのRotationがちゃんと変わっていて、3Dモデルが常に右を向くなら、Transformの値がどれかおかしくなってるってことだと思うんですが……。

          方向転換するときに、Scaleの1と-1を変えて方向転換してるかもしれません。

          「Character」コンポーネントの”Flip Model On Direction Change”のチェックボックスを外せばなおるかもしれません。

          2Dキャラ(スプライト画像)用のチェックボックスなので3Dモデルでは外しておいた方が良いと思います。

          それとは別に、Animatorを使っていれば、設定してあるアニメーション自体で回転を変更するものが入っていて、Rotationが上書きされているなんてこともあったりするかも……。的外れかもしれませんが。

          • LC より:

            Scaleをすべて1にし、
            Flip Model On Direction Changeはチェック有でデフォルトX-1 Y1 Z1から
            X1 Y1 Z-1にすることでうまくできました。
            おかげでやっと次に進めそうですありがとうございました!

タイトルとURLをコピーしました