UEFN / Verse

【UEFN】Gameplay Camera / Controls Device (カメラ・操作の仕掛け) の使い方|Verseで視点と操作を動的に切り替える実装

UEクリエイターズ【運営】

こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。

この記事では、ボリュームによるカメラ視点と操作モードの動的切り替えについて具体的に説明していきます。

動画でも解説しているので参考にしてみてください。

概要

UEFNにおいて、特定のエリアに進入した際、自動的にカメラアングルを固定(トップダウン視点や横スクロール視点)し、それに応じた操作モードに切り替える手法は、ゲーム体験の質を大きく向上させます。

本記事では、Volume Device(ボリュームの仕掛け)をトリガーとし、Gameplay Camera Fixed Angle Device(固定角度カメラの仕掛け)と、それに対応するGameplay Controls Device(操作の仕掛け)をVerseで制御する実装フローを解説します。これにより、エリアごとに異なるゲームジャンルのような操作感を提供することが可能になります。

検証環境:Unreal Editor 5.8(2026年1月時点)

各デバイスの基本設定

【UEFN】Gameplay Camera / Controls Device (カメラ・操作の仕掛け) の使い方|Verseで視点と操作を動的に切り替える実装

動的な切り替えを制御するために、あらかじめ以下のデバイスを配置し、プロパティを調整します。

Gameplay Camera Fixed Angle Device(固定角度カメラの仕掛け)

カメラアングルを固定するためのデバイスです。用途に応じて PitchYaw を設定します(例:横スクロールなら Yaw: -90)。

  • Add to Players on Start:False に設定。
    • この項目が True だとゲーム開始時に強制適用されてしまうため、Verse側で制御するために必ずオフにします。

Gameplay Controls Device(操作の仕掛け)

視点に合わせた最適な操作を提供するために必要です。トップダウンなら Gameplay Controls Third Person Device(三人称操作の仕掛け)、横スクロールなら Gameplay Controls Side Scroller Device(サイドスクローラー操作の仕掛け) を選択します。

  • Add to Players on Start: False に設定。

Volume Device(ボリュームの仕掛け)

【UEFN】Volume Device (ボリュームの仕掛け)の使い方|Verseによるエリア判定とイベント制御

プレイヤーの進入・退出を検知するトリガーとして使用します。

  • Mutator Zone Device(ミューテーターゾーンの仕掛け) でも代用可能ですが、単なるエリア判定のみであれば、負荷の軽い Volume Device の使用を推奨します。
RECOMMEND
【UEFN】Volume Device (ボリュームの仕掛け)の使い方|Verseによるエリア判定とイベント制御
【UEFN】Volume Device (ボリュームの仕掛け)の使い方|Verseによるエリア判定とイベント制御

Verseによる制御・実装(フルコード)

Verseコードでは、ボリュームの AgentEntersEvent(エージェント進入時)AgentExitsEvent(エージェント退出時) を購読し、対象のプレイヤーに対して AddTo および RemoveFrom 関数を実行します。

camera_and_input_manager

# ----------------------------------------------
# Documentation: https://uecreators.com/camera-controls-verse
# ----------------------------------------------

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

# プレイヤーの視点と操作を管理するデバイス
camera_and_input_manager := class(creative_device):

    # --- 仕掛けの登録 ---

    # 1. 切り替えたいカメラ(例:固定角度カメラ)
    @editable
    MyCamera : gameplay_camera_fixed_angle_device = gameplay_camera_fixed_angle_device{}

    # 2. 切り替えたい操作(例:三人称操作) 「Add to Players on Start」をFalseに
    @editable
    MyControls : gameplay_controls_third_person_device = gameplay_controls_third_person_device{}

    # 3. 判定エリア(ボリュームの仕掛け)
    @editable
    MyVolume : volume_device = volume_device{}

    # --- 処理の本体 ---

    # ゲーム開始時に呼ばれる
    OnBegin<override>()<suspends>:void=
        # ボリュームに「入った時」と「出た時」のイベントを登録
        MyVolume.AgentEntersEvent.Subscribe(OnPlayerEnters)
        MyVolume.AgentExitsEvent.Subscribe(OnPlayerExits)

    # ボリュームに入った時の処理
    OnPlayerEnters(Agent:agent):void=
        # カメラと操作をそのプレイヤーに適用
        MyCamera.AddTo(Agent)
        MyControls.AddTo(Agent)
        Print("ボリューム進入:カメラと操作を有効化")

    # ボリュームから出た時の処理
    OnPlayerExits(Agent:agent):void=
        # 適用していたカメラと操作を外す(元の視点に戻る)
        MyCamera.RemoveFrom(Agent)
        MyControls.RemoveFrom(Agent)
        Print("ボリューム脱出:カメラと操作を解除")

side_scroller_manager

# ----------------------------------------------
# Documentation: https://uecreators.com/camera-controls-verse
# ----------------------------------------------

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

side_scroller_manager := class(creative_device):

    # 1. 横スクロール用のカメラ(固定角度カメラ)
    # エディタで Yaw: -90 などに設定
    @editable
    SideCamera : gameplay_camera_fixed_angle_device = gameplay_camera_fixed_angle_device{}

    # 2. 横スクロール用の操作
    # 「Add to Players on Start」をFalseに
    @editable
    SideControls : gameplay_controls_side_scroller_device = gameplay_controls_side_scroller_device{}

    # 3. 切り替えエリア(ボリューム)
    @editable
    SideScrollZone : volume_device = volume_device{}

    OnBegin<override>()<suspends>:void=
        SideScrollZone.AgentEntersEvent.Subscribe(OnEnterSideScroll)
        SideScrollZone.AgentExitsEvent.Subscribe(OnExitSideScroll)

    # エリアに入ったら「横スクロール」開始
    OnEnterSideScroll(Agent:agent):void=
            SideCamera.AddTo(Agent)
            SideControls.AddTo(Agent)
            Print("モード変更:2D横スクロール")

    # エリアを出たら元に戻す
    OnExitSideScroll(Agent:agent):void=
            SideCamera.RemoveFrom(Agent)
            SideControls.RemoveFrom(Agent)
            Print("モード変更:通常視点")

実装のポイント

  1. AddTo関数の引数: AddToRemoveFrom には対象の agent 情報を渡す必要があります。ボリュームのイベントから渡されるエージェント情報をそのまま引き継ぐことで、マルチプレイ時でも特定のプレイヤーのみを制御できます。
  2. APIリファレンスの活用: 各デバイスの正式名称(例:gameplay_camera_fixed_angle_device)や利用可能な関数は、Verse APIリファレンスで確認する習慣をつけましょう。

まとめ

本手法を用いることで、アドベンチャーゲームの特定の部屋だけ固定カメラにする、あるいは特定区間だけ2Dアクションゲームのような操作に変えるといった、動的なゲーム体験の設計が可能になります。

実装の鍵は、デバイス単体で完結させず、Verseを用いて Volume Device のイベントと連携させることにあります。各デバイスの Add to Players on Start を忘れずにオフにし、柔軟なレベルデザインを実現してください。

関連資料

動画版の視聴はこちら:https://youtu.be/2eew7CvyDzo

RECOMMEND
【UEFN】Volume Device (ボリュームの仕掛け)の使い方|Verseによるエリア判定とイベント制御
【UEFN】Volume Device (ボリュームの仕掛け)の使い方|Verseによるエリア判定とイベント制御
参考資料

固定角度カメラの仕掛け|公式ドキュメント

volume_device class|Verse API Reference

gameplay_camera_fixed_angle_device class|Verse API Reference

gameplay_controls_third_person_device class|Verse API Reference

gameplay_controls_side_scroller_device class|Verse API Reference

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


ABOUT ME
UECREATORS
UECREATORS
メタバース制作スタジオ
UEFN/Verse言語に特化した、Fortnite専門メタバース制作スタジオ「UECREATORS」の公式サイトです。当サイトでは、UEFNを用いたゲーム制作技術、Verseプログラミングの実装方法、3D空間設計のノウハウを発信しています。
【法人様・事業者様へ】UEFNを活用したメタバース空間の受託制作・開発支援を行っております。制作のご相談・お見積もりは、お問い合わせフォームより承っております。
Recommend
こちらの記事もどうぞ
記事URLをコピーしました