ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
Unreal Engine 5(UE5)でポーン(Pawn)をスポーンしても視点(カメラ)を切り替えないようにするには、スポーンするポーンを操作対象(Possess)にしないことが基本です。視点が移るのは「操作対象が変わると、それに連動してカメラの注視先(View Target)も変わる」仕組みのためで、スポーンしたポーンを操作対象にしなければ、視点は元のまま保たれます。具体的には、スポーンするポーンのAuto Possess Playerを「Disabled」にする、明示的にPossessを呼ばない、必要に応じてSet View Target with Blendで視点を元に戻す、という3つの方法が中心になります。
この記事の要点
- 視点が切り替わるのは、操作対象(Possess対象)の変化にカメラ(View Target)が連動することが主な原因。スポーン自体が直接カメラを動かすわけではない。
- 最も確実なのは、スポーンするポーンを操作対象にしないこと。Auto Possess Playerを「Disabled」にし、明示的にPossessしなければ視点は移らない。
- Player ControllerのAuto Manage Active Camera Targetが有効だと、Possess時に自動でカメラ注視先が更新される。無効化すると自動追従を止められる。
- すでに視点が動いてしまった場合や明示的に固定したい場合は、Set View Target with Blendで元のポーン(やカメラ)に視点を戻す。
- Auto Possess PlayerとAuto Possess AIは別物。プレイヤー視点に関わるのは前者。
- 挙動はプロジェクト設定やバージョンで差が出ることがあるため、最終的には公式ドキュメントと実機での確認を推奨。
1なぜスポーンすると視点が切り替わるのか
UE5では、画面に映る視点はおおむね次の流れで決まります。Player Controllerが操作対象のポーン(Possess中のPawn)を持ち、その状態からPlayer Camera ManagerがView Target(視点の対象アクター)を決定し、最終的なカメラ位置・向きが算出されます。
ここで重要なのは、「ポーンをスポーンしただけ」では原則として視点は動かないという点です。視点が切り替わって見える典型的な原因は、次のいずれかです。
| 原因 | 何が起きているか |
|---|---|
| Auto Possess Playerが設定されている | スポーンしたポーンのプロパティでAuto Possess Playerが「Player 0」などに設定されていると、スポーン時に自動でそのポーンが操作対象になり、視点も連動して移る。 |
| 明示的にPossessしている | ブループリントやC++でPossess(またはGet Player Controller → Possess)を呼んでおり、操作対象が新しいポーンへ移っている。 |
| カメラ注視先の自動管理 | Player ControllerのAuto Manage Active Camera Targetが有効なため、操作対象の変更に合わせてView Targetが新しいポーンに更新される。 |
| View Targetを直接変更している | Set View Target with Blendなどで、スポーンしたポーン(やそのカメラ)へ意図せず視点を向けている。 |
つまり「視点を切り替えない」とは、上記の連動を起こさないように制御することと言い換えられます。以下では原因に対応した対処を順に解説します。
2対処1:スポーンするポーンのAuto Possess Playerを「Disabled」にする
最も基本的で確実なのが、スポーンするポーン側のAuto Possess Playerを「Disabled」にしておくことです。これが「Player 0」などになっていると、スポーンと同時に自動で操作対象になり、視点が移ってしまいます。
確認・設定手順(ブループリント)
- スポーンするポーン(またはCharacter)のブループリントを開く。
- クラスのデフォルト(Class Defaults)またはアクターのDetailsパネルを表示する。
- Pawn カテゴリ内のAuto Possess Playerを確認し、Disabledに設定する。
- あわせてAuto Possess AIも意図しない値になっていないか確認する(AIによる占有が視点に影響することは通常ないが、操作対象の管理上は確認しておくと安全)。
なお、新規に作成したポーンではAuto Possess PlayerのデフォルトはDisabledです。意図せず視点が移る場合は、テンプレートや継承元、あるいはレベルに配置済みのポーンで値が変更されていないかを点検してください。
C++でクラス側にデフォルトの自動占有を設定している場合は、コンストラクタ内の指定(例:AutoPossessPlayer = EAutoReceiveInput::Player0;)が原因になり得ます。視点を移したくないポーンでは、この指定を行わない(=Disabled相当のまま)ようにします。
3対処2:そもそもPossessしない(操作対象を変えない)
スポーン処理の中でPossessを呼ぶと、その時点で操作対象が新しいポーンへ移り、カメラ自動管理が有効なら視点も連動します。視点を保ちたいなら、スポーン後にPossessを呼ばないのが原則です。元のポーンを操作し続けたい場合は、元のポーンをPossessしたまま放置すれば視点は維持されます。
ブループリントでの基本手順
- Spawn Actor from Classでポーンを生成する。
- 生成後にPossessノードをつながない(呼ばない)。
- 必要な処理(AIの起動、位置調整など)だけを行い、操作対象は元のポーンのまま維持する。
「スポーンしたポーンをAIに動かしてほしいが、プレイヤー視点は変えたくない」という場合は、プレイヤー(Player Controller)でPossessするのではなく、AI Controller側に占有させる設計にします。こうすると、プレイヤーの操作対象・視点はそのまま保たれます。
カメラ注視先の自動管理を止める
何らかの理由でPossessが必要な一方、視点だけは動かしたくないというケースもあります。その場合、Player ControllerのAuto Manage Active Camera Targetを無効化すると、操作対象が変わってもカメラの注視先が自動更新されなくなります(=View Targetが自動で新しいポーンに移らない)。
// Auto Manage Active Camera Target を無効化(操作対象変更に伴うカメラ自動追従を止める) PlayerController->bAutoManageActiveCameraTarget = false;
// その後 Possess しても、View Target は自動では切り替わらない PlayerController->Possess(NewPawn); |
ブループリントでもSet Auto Manage Active Camera Target(または該当プロパティ)をfalseに設定することで同様の制御が可能です。ただし、この設定は「Possessしてもカメラを自動追従させない」ためのものなので、後から手動で視点を変えたくなった場合はSet View Target with Blendで明示的に指定する運用になります。
4対処3:視点を明示的に固定・復帰させる(Set View Target with Blend)
すでに視点が動いてしまった、あるいは確実に元の視点へ戻したい場合は、Set View Target with Blendで視点の対象アクターを指定し直します。Blend Timeを0にすれば即座に、正の値にすればなめらかに視点が移動します。
ブループリントでの手順
- Get Player Controller(Player Index 0など)を取得する。
- Set View Target with Blendノードを呼ぶ。
- New View Targetに「視点を向けたいアクター」(=元のポーンや専用カメラ)を渡す。
- 即時に戻すならBlend Timeを0.0に設定する。
// 例:ポーンをスポーンしつつ、視点は既存のポーンへ固定する APawn* NewPawn = GetWorld()->SpawnActor<APawn>(PawnClass, SpawnLocation, SpawnRotation);
APlayerController* PC = GetWorld()->GetFirstPlayerController(); if (PC && ExistingPawn) { // 既存のポーンに視点を即時固定(Blend Time = 0) PC->SetViewTargetWithBlend(ExistingPawn, 0.0f); } |
専用のカメラアクター(Camera Actor)をレベルに置き、その視点を固定したい場合は、New View Targetにそのカメラアクターを渡します。View Targetは「カメラそのもの」ではなく「視点の基準となるアクター」を指定する点に注意してください(指定したアクターのカメラ計算ロジックに基づいて最終的な画が決まります)。
| よくある落とし穴 |
|---|
|
5方法の使い分け早見表
| やりたいこと | 推奨アプローチ |
|---|---|
| スポーンしたポーンを操作・占有しない | Auto Possess PlayerをDisabledにし、Possessを呼ばない。 |
| スポーンしたポーンをAIに動かす | プレイヤーでPossessせず、AI Controller側に占有させる。 |
| Possessは必要だが視点は変えたくない | Auto Manage Active Camera Targetをfalseにする。 |
| すでに移った視点を元へ戻す/明示的に固定する | Set View Target with Blendで対象を指定(即時ならBlend Time 0)。 |
6よくある質問(FAQ)
Q. Auto Possess Playerを「Disabled」にしたのに、まだ視点が切り替わります。
A. 別の箇所でPossessが呼ばれている可能性が高いです。BeginPlayやレベルブループリント、スポーン処理の続きなどを確認してください。また、レベルに配置済みのインスタンス側でAuto Possess Playerが個別に上書きされていないかも点検します。
Q. 操作対象は新しいポーンに移したいが、カメラだけ元の位置に残したい場合は?
A. Possessは行いつつ、Player ControllerのAuto Manage Active Camera Targetをfalseにして自動追従を止め、必要ならSet View Target with Blendで残したい対象(元のポーンや専用カメラ)を明示的に指定します。
Q. Set View Target with Blendで視点を戻しても、すぐ元に戻ってしまいます。
A. 同じフレームでのUnPossessや、その後のPossessによってView Targetが再計算され、上書きされている場合があります。処理順序を見直し、視点設定を最後に(あるいは次フレームで)行うと安定しやすくなります。Auto Manage Active Camera Targetの設定とも合わせて確認してください。
Q. Auto Possess PlayerとAuto Possess AIはどう違いますか?
A. Auto Possess Playerは、指定したプレイヤー(Player 0など)が自動でそのポーンを操作対象にする設定で、プレイヤー視点に直結します。Auto Possess AIは、AI Controllerによる自動占有を制御する設定で、プレイヤー視点には通常関係しません。視点問題の調査ではまずPlayer側を確認します。
7まとめ
UE5でポーンをスポーンしても視点を切り替えない核心は、「操作対象(Possess)を変えない」「カメラの自動連動を意図的にコントロールする」ことに尽きます。実装の順序としては、(1)スポーンするポーンのAuto Possess Playerを「Disabled」にする、(2)不要なPossessを呼ばない(AIで動かすならAI Controllerへ)、(3)それでも視点制御が必要ならAuto Manage Active Camera TargetやSet View Target with Blendで明示的に固定する、という流れが分かりやすいでしょう。挙動はプロジェクト設定やエンジンのバージョンによって差が出ることがあるため、重要な箇所は公式ドキュメントと実機での動作確認を行うことをおすすめします。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 床の上に乗ったらイベントを発生させる方法
- OverlapAllDynamicとOverlapAllの違い
- タイトル画面を作る方法
- サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
- ボタンに文字を記載する方法
- Event ActorBeginOverlapとOn Component Begin Overlapの違い
- キャラクターに特定のオブジェクトとの当たり判定を付ける
- 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
- 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
- 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
- Blenderファイルをインポートする方法
- 鏡を作成する方法
- レベルブループリントでキャラクターの出現を設定する方法
- サードパーソンテンプレートにおけるキャラクター出現の定義
- アイテムに近づいたらボタンを押してイベントを発火させる方法
- 画面の中央にメッセージを表示する方法
- どこからでも呼び出せるカスタムイベントを作成する方法
- カスタムイベントに引数を追加する方法
- 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
- オブジェクトに近づいている間だけメッセージを表示する方法
- PCの画面を操作するUIを作る方法
- コンテンツブラウザに画像を追加する方法
- SetInputMode_UIOnlyを取り消す方法
- 特定の画像の上にマウスカーソルを置いたら手マークにする方法
- オブジェクトがアウトライナーで選択できない原因と解決策
- PlayerStartを作成する方法
- メニュー画面を作成して開く方法
- 「Esc」キーを押してメニュー画面を開く方法
- イベントの「On Clicked」と「On Pressed」の違い
- 「Set Input Mode」の種類と使い方
- 「Set Game Paused」の使い方と詳細解説
- Motion Matchingとは?
- 「GameMode」と「GameModeBase」の違い
- マップに配置したTargetPointを取得する方法
- TargetPointにタグをつけて取得する方法
- Spawnしたインスタンスがイベントを実行する方法
- 特定の時間ごとに処理を実行する方法
- 数値をランダムで出力する方法
- ThirdPersonテンプレートでキャラクターの移動を歩くように変更する方法
- MaxWalkSpeedを変更する方法
- しゃがむ動作を導入する方法
- キャラクターのアニメーションを設定する方法
- 導入済みのプラグインを確認する方法
- Motion Matchingの導入と必要なプラグイン
- プレイヤーを非表示にする方法
- カメラを傾ける角度を制限させる方法
- 配列からランダムに重ならない要素を特定の数取得する方法
- カメラの映す画面に文字やエフェクトを付ける方法
- キャラクターやメッシュを非表示にした際にカメラが移動しなくなる問題の解決方法
- プライマリーデータアセットを活用する方法
- プレイヤーのHPといった変数を定義する最適な場所
- カメラに映った画面をスクリーンショットとして保存する方法
- ゲーム内のカメラ映像を保存して再表示する方法
- HighResShot を使って高解像度の画像を保存する方法(UE5)
- HighResShotで保存した画像のファイル名を取得する方法
- SceneCapture2DとFrameGrabberの画像保存方法の比較
- SceneCapture2Dを使用して画像を保存・取得する方法
- HighResShotとTake High Res Screenshotの違い
- ゲーム終了ボタンを作成する方法
- 「Save Game To Slot」の戻り値がfalseになる問題の解決方法
- 画面上にメッセージを指定された時間表示させる方法
- シェーダコンパイル時間を短縮する方法
- 「Take High Res Screenshot」実行時に「シェーダをコンパイル」に長時間待たされる問題とその解決策
- データベースを活用する方法
- UE5.5がインストールされた環境にUE5.4を追加で導入する方法
- World PartitionとWorld Compositionの違い
- オープンワールドテンプレートとは?
- ポーンをスポーンさせても視点を切り替えない方法
- キャラクター同士がすり抜けてしまう問題の解決方法
- キャラクターの外見を動的に変更
- World Partitionでインスタンスが「アンロード済み」になる問題
- データ アセットとデータ テーブルの違い
- コンポーネントイベントグラフ内で親クラスの変数にアクセスする方
- エディターのソースコードの自動保存の頻度を高める方法
- SpawnActorでSpawn Transform Rotationが反映されない理由
- ミニマップを表示しポーンの位置を反映する方法
- RInterp ToとVInterp Toの違い
- 毎秒実行するイベントの定義方法
- Niagara のエフェクトにコリジョンを持たせる方法
- 「Overlap」と「Hit」の違い
- OverlapはあるがHitがない原因
- Overlapした位置の座標を取得する方法
- ブループリントでレベル間のパラメータを受け渡す方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?