Unreal Engine 5 で進めている TPS プロジェクトにおいて、スプリント中のエイム制限と、エイム解除時の遅延制限(0.75秒)に関する仕様を見直しました。今回はその内容と背景について簡単にまとめます。

仕様変更の背景
これまでの実装では、スプリント中はエイム不可、エイム解除から通常状態に戻るのに0.75秒かかるという仕様が存在していました。
この仕様は ABP_Overlay_Complex_Base
内のオーバーレイ制御をベースに、アニメーションBP(ABP)側で行動の可否が制御されるような構造でした。
ただし、「プレイヤーの操作可否」をアニメーションの遷移タイミングに依存させるのは、アニメーションとゲームロジックの責務が曖昧になるため、今回思い切ってこの仕様を見直すことにしました。
変更内容の概要
1. ABP の制限ロジックの解除
ABP_Overlay_Complex_Base > AnimGraph > SM_OverlayPose にて以下を修正:
WantsToSprint
に関連する遷移条件を削除Aiming → Ready
の遷移に使われていたCurrentStateTime > 0.75
条件を削除



これにより、エイム解除時の待機時間がなくなり、即時で操作可能な状態に遷移するようになりました。
Sprintだったらの条件も全部消したので、Sprint要求中もエイム可能になりました。

ちなみに、今回削除したCurrentStateTimeってのが有用そうだなと勉強になりました。
2. キャラクターBP側の制御を見直し
CBP_SandboxCharacter > BattleGraph にて以下の変更を行いました:
- 旧仕様では「スプリント中はエイム不可」に合わせて発射そのものを禁止していたが、その分岐条件から削除

これにより、スプリント中でもエイム・発射が可能になります。
今後に向けた考察
仮に従来と同じような仕様(例えば「スプリント中は発射不可」)を再導入するにしても、アニメーションBPではなく Character BP 側で制御するのがベストだと考えています。
具体的には、CBP_SandboxCharacter
内で WantsToSprint
や WantsToAim
の変更イベントをトリガーとして、行動の有効・無効を判定する仕組みが望ましいです。
アニメーションの状態遷移はあくまで視覚表現であり、ゲームプレイのロジックとは分離するべきという原則を大事にしていきたいところです。
まとめ
- エイム・スプリントに関するABP側の制限を削除
- ゲームロジックは可能な限りCBP側に集約
- アニメーションとロジックの責務分離を意識した設計へ
これでTPSの操作性がよりスムーズになりました。次回は、武器使用時のロジックをCBPから分離する責務分担の改善について説明します。
- 🔧使用バージョン:Unreal Engine 5.5.4
- 🎮ベースプロジェクト: PolygonHive/GASP-ALS
ご意見・ご質問があればコメント欄やX(旧Twitter)DMでもお気軽にどうぞ!
コメント