【UEFN】Gameplay Camera / Controls Device (カメラ・操作の仕掛け) の使い方|Verseで視点と操作を動的に切り替える実装
こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。
この記事では、ボリュームによるカメラ視点と操作モードの動的切り替えについて具体的に説明していきます。
動画でも解説しているので参考にしてみてください。
概要


UEFNにおいて、特定のエリアに進入した際、自動的にカメラアングルを固定(トップダウン視点や横スクロール視点)し、それに応じた操作モードに切り替える手法は、ゲーム体験の質を大きく向上させます。
本記事では、Volume Device(ボリュームの仕掛け)をトリガーとし、Gameplay Camera Fixed Angle Device(固定角度カメラの仕掛け)と、それに対応するGameplay Controls Device(操作の仕掛け)をVerseで制御する実装フローを解説します。これにより、エリアごとに異なるゲームジャンルのような操作感を提供することが可能になります。
検証環境:Unreal Editor 5.8(2026年1月時点)
各デバイスの基本設定

動的な切り替えを制御するために、あらかじめ以下のデバイスを配置し、プロパティを調整します。
Gameplay Camera Fixed Angle Device(固定角度カメラの仕掛け)

カメラアングルを固定するためのデバイスです。用途に応じて Pitch や Yaw を設定します(例:横スクロールなら 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(ボリュームの仕掛け)

プレイヤーの進入・退出を検知するトリガーとして使用します。
- Mutator Zone Device(ミューテーターゾーンの仕掛け) でも代用可能ですが、単なるエリア判定のみであれば、負荷の軽い Volume Device の使用を推奨します。

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("モード変更:通常視点")
実装のポイント
- AddTo関数の引数:
AddToやRemoveFromには対象のagent情報を渡す必要があります。ボリュームのイベントから渡されるエージェント情報をそのまま引き継ぐことで、マルチプレイ時でも特定のプレイヤーのみを制御できます。 - APIリファレンスの活用: 各デバイスの正式名称(例:
gameplay_camera_fixed_angle_device)や利用可能な関数は、Verse APIリファレンスで確認する習慣をつけましょう。
まとめ
本手法を用いることで、アドベンチャーゲームの特定の部屋だけ固定カメラにする、あるいは特定区間だけ2Dアクションゲームのような操作に変えるといった、動的なゲーム体験の設計が可能になります。
実装の鍵は、デバイス単体で完結させず、Verseを用いて Volume Device のイベントと連携させることにあります。各デバイスの Add to Players on Start を忘れずにオフにし、柔軟なレベルデザインを実現してください。
関連資料
動画版の視聴はこちら:https://youtu.be/2eew7CvyDzo

