Unityでジャンクゲームを作っているっぽい

会社帰りにGPD PocketにUnity入れてゲーム作ってます

【アクツクMV】カメラスクロールの一時停止

目標

横スクロールゲーム中に中ボスとか出現した時に、スクロールを停止させたい
その後、目的を達成したらスクロールを再開したい

流れ

  • カメラ追従用のオブジェクトを用意
  • このオブジェクトをプレイヤー側で接続
  • スクロールを停止したい場所に、判定用のタイルをシーンに配置
  • 判定用のタイルに触れるとスイッチをFalseにして、プレイヤーの「オブジェクトの接続」を無効
  • カメラ追従用のオブジェクトがシーンに残されることで、スクロールが停止
  • ボスを倒したタイミングで、カメラ追従用のオブジェクトをプレイヤーに移動
  • カメラ追従用のオブジェクトがプレイヤーに接触したタイミングでスイッチをTrueに戻し、プレイヤーの「オブジェクトの接続」を有効
  • スクロール再開

プレイヤー

スイッチ管理

isCameraRemoveを追加。初期設定はON

オブジェクトの接続

後で作るplayer_cameraオブジェクトを接続
スイッチisCameraRemoveで有効/無効を制御
子オブジェクトにしない

カメラ追従用のオブジェクト

アニメーション

アニメーションは1つ、画像は不要、「壁判定」必要

↑このスクショでは挙動を確認したいので画像を設定していますが、最後に消す予定

player_cameraオブジェクト

とりあえずplayer_cameraと命名
オブジェクトの設定は、↓のような感じ

基本設定はこんな感じ

アクションプログラムは↓な感じ
中ボスを倒したタイミングから動作する内容になります

1.中ボスの死亡フラグを判定

2.プレイヤーに向かってplayer_cameraオブジェクト移動

3.ループ処理。行きと帰り両方に同じ時間を設定

4.player_cameraオブジェクトがプレイヤーに接近したら判定

5.isCameraRemoveをONにしてオブジェクト消す。これでカメラのスクロール再開


判定用のタイル

なにかわかりやすいタイルを任意で用意
最後にタイルを配置したレイヤーは最背面設定にして見えなくするので何でも良い
タイルの設定は↓のような感じ

シーンに配置。
場所はイロイロ試しながら設定してみてね

プレイヤーのオブジェクトの接続を無効にする

今回は、プレイヤーが判定用のタイルに接触すると、中ボスが出現する
このタイミングで、プレイヤースイッチisCameraRemoveをOFFにする
これにより、カメラ追従用のオブジェクトがシーンに取り残され移動しなくなる = スクロール停止 となります

ですので、↓は中ボスのアクションプログラムになります

1.判定用タイルにプレイヤーが接触したら判定

ゲームによっては、判定用のタイルは不要で別の判定の方が楽かもしれないですね

2.中ボスが動き始めると同時に、isCameraRemoveをOFF


以上で、スクロールの一時停止とスクロール再開が可能になりました
youtu.be

繋ぎ目が少しガクガクしていますが、調整と演出で気にならなくすることはできるといいなぁと