UE5でFPSゲーム制作 Part26-NPCに話しかける

イベントディスパッチャーを使って話しかける 相手に対してアクションを起こすときはブループリントインターフェースを通したメッセージか、イベントディスパッチャーを通して呼び出すかの2つが使われやすいです。 この2つを簡単に分けると、インターフェ…

UE5でFPSゲーム制作 Part25-翻訳

今回はC++からではなく直接入力する方法で翻訳します。個人制作の範囲なら翻訳を別の人が担当するということは少ないと思います。 参考になるサイト 最新UE4タイトルでのローカライズ事例 【UE4 Localization Deep Dive 2019】 | ドクセル (docswell.com) テ…

UE5でFPSゲーム制作 Part24-字幕

字幕 字幕が呼ばれるタイミングは時間、場所、アクションなど様々なフラグによって違うため、World Subsystemを利用するとどこからでもアクセスできて便利です。 BattleManagerSubsystem.h 作成したBattle Manager SubsystemはWorld Managerなのでここにイベ…

UE5でFPSゲーム制作 Part23-タイトル画面

タイトル画面とステージ遷移 UMGを使ってタイトルからステージへ移行するには、Open Levelを使います。 タイトル用の何もない真っ暗な新規レベルを作成します。 次に新規ブループリントからGame Mode Baseを選択し、BP_TitleGameModeと名付けます。 BP_Title…

UE5でFPSゲーム制作 ローディング画面

今回は参考になった他者様のブログ紹介です。 ステージ等の切り替えの際、普通にOpen Levelでレベルを開くとロードが終わるまで画面が完全に固まってしまいます。 「画面が完全に止まった状態」というのはゲームを遊ぶプレイヤーに対してかなりのストレスを…

UE5でFPSゲーム制作 Part22-スタートとゴール

前々回Battle Manager SubsystemにEnemy Countという変数を作りました。ワールド内の敵キャラクターがやられると、この数字は減っていきます。そしてこの数字が0になったときに、通知がいくようになればゴールが作れます。 イベントディスパッチャー 1つ以…

UE5でFPSゲーム制作 Part21-体力とコンポーネントの追加

Apply Damageで銃からダメージを与えると、Any Damageというイベントでダメージを数字として受け取ります。 ステータスを作る 新規C++クラスからActor Componentを選択し、StatusComponentと名付けます。 StatusComponent.h StatusComponent.cpp CharacterBa…

UE5でFPSゲーム制作 Part20-WorldSubsystem

Subsystemの内容が多すぎるので詳しい説明は調べてください。 Subsystemは自身を管理しているものと同じタイミングで生成、破棄されるため、手動で生成、破棄をする必要がなく管理が楽という利点があります。 生成されていればどこからでもアクセスが可能で…

UE5でFPSゲーム制作 Part19-武器の残弾を表示する

UIに武器の弾数等を表示する UIに武器の名前やマガジンの弾数を表示できるようにしたいと思います。今までやってきたことから、自分が持っている武器はCurrent Weaponという変数に格納しているので、Current Weaponから引っ張ってくるだけで済みます。 Weapo…

UE5でFPSゲーム制作 Part18-UIの作成

UIの作成はWidgetブループリントを使って行います。 体力の表示 ユーザーインターフェースから新規ウィジェットブループリントを作成します。WBP_MainHUDと名付けます。 WBP_MainHUD Canvas Panelを配置します。 体力を表示させるにはProgress Barを使用しま…

UE5でFPSゲーム制作 Part17-ADS

ADSとはAim DOwn Sightの略で、銃をのぞき込んで撃つことです。 ADS PlayerCharacter.h ADSに関する関数を作成していきます。bIsAiming、IsAiming、SetAiming、FOV、GetFOVを作成します。 PlayerCharacter.cpp 入力アクションから新しくIA_RightActionをDigi…

UE5でFPSゲーム制作 Part16-武器を拾う②

前回、インターフェースを通してBP_WeaponBaseのPickup Weapon関数とPickup Inventory関数で銃の所持者であるAs Player Character変数を登録できるようにしました。 Part12-銃を作る③の最後で、銃の所持者をBegin Playで登録していましたが、BPI_Weaponを通…

UE5でFPSゲーム制作 Part15-武器を拾う①

最終的には今持っている武器を捨てて、落ちてる武器を拾い上げるようにしたいと思います。 武器を拾う まずは落ちてるアイテムを認識できるようにします。 WeaponBase.h UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon", meta = (AllowP…

UE5でFPSゲーム制作 Part14-武器の持ち替え

BP_WeaponBaseを継承して子BPを作ります。すべての銃はこのBP_WeaponBaseを継承しており、基本的にステータスをいじるだけで武器の種類を増やすことができます。 武器の持ち替え 2つ以上の武器を装備している時、キーボードの1、2番やホイールで変更できる…

UE5でFPSゲーム制作 Part13-リロード

リロード リロードなどのアニメーションを伴う動作はMontage Playを使用するとアニメーションの途中や終わったとき、やめたときなどのタイミングでイベントを通知してくれるので便利です。 WeaponBaseにリロード関連の関数を追加します。Fire関数はマガジン…

UE5でFPSゲーム制作 Part12-銃を作る③

銃弾とダメージ判定 銃でダメージを与える方法は実際に弾をActorで作って飛ばす方法と、レイキャストを使って視線の先に敵がいるかを判定する方法の2種類が大まかな方法になると思います。 Actorで弾をつくる方法は弾道や弾速などがリアルに出来ますが、弾…

UE5でFPSゲーム制作 Part11-AbilitySystemの排他制御

GASにはタグを設定することができ、これによってアビリティ中に他のアビリティをブロックしたり、キャンセルすることができます。 前回の銃の発射処理で説明しなかったGA_Fireを作っていきます。 新規のGameplay AbilityブループリントからGA_Fireと名付け、…

UE5でFPSゲーム制作 Part10-銃を作る②

とりあえず銃を持った状態になったので、銃の発射処理を作っていきます。 ブループリントインターフェース キャラクターから武器へ発射した情報を通知するにはブループリントインターフェースを使用します。 ブループリントからブループリントインターフェー…

UE5でFPSゲーム制作 Part9-銃を作る①

武器はどんなシステムを作るかに非常に影響されるので、ある程度のコンセプトを先に決めておくと作りやすくなります。 銃の作成 まずはC++で基底クラスを作ります。Actorクラスを選択しWeaponBaseと名付けます。 WeaponBase.h USkeletalMeshComponent* Mesh…

UE5でFPSゲーム制作 Part8-しゃがみ

(2023/10/10追記)SpringArmComponentを利用した方法を追加しました。この方法は主にマルチプレイを視野に入れた実装方法になります。 UnrealEngineにはデフォルトでしゃがみの機能があり、CrouchとUnCrouchという関数で実装することができます。ただし、こ…

UE5でFPSゲーム制作 Part7-ダッシュ

ダッシュ ダッシュをGASで実装するためには、AttributeクラスとGameplay Effectクラスが必要になります。 このあたりは内容が非常に難しく実装方法だけ記述しているので、ちゃんと理解されたい方は自分が参考にした記事を載せておきます。 参考にしたブログ…

UE5でFPSゲーム制作 Part6-ジャンプ

ジャンプ 前々回のEnhancedInputの時と同じように 入力アクションからIA_Jumpを作成し、Value TypeをDigital(bool)にします。 IMC_FPSにアクションマッピングを追加し、TriggersをPressedにします。 次にGameplayAbilityブループリントを作成から、Gameplay …

UE5でFPSゲーム制作 Part5-GameplayAbilitySystem

Gameplay Ability System (以下GAS)は多機能な反面、複雑でとっつきにくい印象があります。少なくとも自分はそうでした。 個人制作レベルであまり使う必要はないのかもしれませんが、GASの機能の一つである挙動の排他的処理が非常に優秀なので実装していきた…

UE5でFPSゲーム制作 Part4-EnhancedInput

Enhanced Input EnhancedInputはこれまでよりも複雑な入力処理に対応することができる入力システムです。UE5.1からはプロジェクト設定のデフォルトのプレイヤー入力クラス、入力コンポーネントクラスも変更されており正式に実装されたことがわかりました。 …

UE5でFPSゲーム制作 Part3-GameModeの変更とキャラのスポーン

GameModeの変更 Blueprintsというフォルダを作成し、ブループリントクラスからすべてのクラスを選びます。前回作成したC++のTutoGameModeを選択し、BP_MainGameModeと名付けて作成します。 プロジェクト設定→マップ&モード→デフォルトのゲームモードをGameM…

UE5でFPSゲーム制作 Part2-基底クラスの作成

BPによる参照のデメリットについて BPによる参照は依存アセットも一緒にロードしてくれる非常に便利な機能を持っていますが、大量のBPクラスでお互いがお互いを参照するような不適切な参照はエディタのロード時間とメモリ使用量に深刻な影響を与えます。 (…

UE5でFPSゲーム制作 Part1-セッティング~プラグイン導入

自分のメモ用ですが、参考程度になればいいなと思って記事に残そうと思います。ただ、関数等の詳しい説明はしませんし、できませんので、どちらかというとワークフローの参考になればと思います。 環境はUE5.1.0です。 セッティング エンジンを起動したらゲ…