ゲーム中にマウスカーソルを表示させる方法。
UIを表示させる
ゲームプレイ中に表示されるUIを作成する。
3. テキストを動的に変更する
「Text_PrincessState」の値を動的に変更させるようにする。
Hierarchyで「Text_PrincessState」を選択し、Detailsで「IsValiable」にチェックを入れる。
そしてテキストを変更する関数を作成する。
そしてこの関数をテキストを変更したい所で呼び出す。
4. ウィジェットを画面上に表示する
[Actor]を継承したブループリント「BP_UIManager」を作成する。
「BP_UIManager」のEventGraphで以下のようにノードを組む。
そして、「BP_UIManager」をレベル上に配置する
AIPerceptionのデバッグモードを使えるようにする
AIPerceptionのデバッグモードを使えるようにする。
ProjectSettingsの設定
[Project Settings > Engine > Gameplay Debugger] を開く。
「ActivationKey」をQ
などの任意のキーを割り当てる。
また、テンキーが無い場合はその下の数字も変更する。
4方向のヒットリアクションの出し分け
攻撃を受けた時の敵との位置関係によって前後左右のヒットリアクションを出しわける方法について。
1. コリジョンを設定する
ProjectSettingsでコリジョンのチャンネルを作成する。
武器のコリジョンを以下のように設定する。
[Generate Overlap Events] にチェックを入れ、[Collision Enable] をNo Collision
にし、[Pawn] のみOverlap
にする。
プレイヤーキャラクターBPを開き、Meshのコリジョンを設定する。
[Generate Overlap Events] にチェックを入れ、[EnemyWeapon] をOverlap
にする。
敵の武器とMeshのコリジョンも同様に設定する。
3. アニメーション通知で武器コリジョンを制御
[AnimNotifyState]を継承したBP「ANS_WeaponCollision」を作成し、開く。
ReceivedNotifyBeginをオーバーライドした関数を作成し、下記のようにBPを組む。
ReceivedNotifyEndをオーバーライドした関数を作成し、下記のようにBPを組む。
キャラクター(もしくはそのベースクラス)にコリジョンをオンオフする以下のイベントを追加。
攻撃の全てのモンタージュに「ANS_WeaponCollision」を設定する。
4. ヒットリアクションの出しわけを行う
キャラクターのベースクラスに以下のようにBPを組む。
GASを使ってコンボ攻撃を実装する
GameplayAbilitySystemを使用してコンボ攻撃を実装する方法
2. GAの親ファイルを作成
[Blueprint]フォルダの中に[GAS]フォルダを作成する。
その中に [Blueprints > GameplayAbilityBlueprint] から [Gameplay Ability] を選択し、「GA_Combo_Base」という名前でBPを作成する。
「GA_Combo_Base」を開き、IsFirstAttack変数を作成し、下記のようにBPを組む。
3. GAの子ファイルを作成
コンテントドロワーで [GA_Combe_Base > 右クリック > Create Child Blueprint Class] からファイルを作成し、「GA_Combo_C1」と命名する。
「GA_Combo_C1」を開き、コンボ1つめのモンタージュをセットする。
また [IsFirstAttack] にチェックを入れる。
タグを作成する。
[Details > Tags > Ability Tags > Edit > Add New Gameplay Tag] から「Ability.Attack.Combo」というタグ名を入力し、「Add New Tag」をクリック。
タグ名のドットは階層を表す。これはアビリティに付ける名前となる。
次に [Activation Owned Tags] に「Ability.State.Combo_1」というタグを設定する。
これは、このアビリティが実行されている間(EndAbilityノードが実行されるまでの間)所有者に付与されるタグである。
さらに [Activitaion Blocked Tags] に「Ability.State」というタグを設定する。
これにより、「Ability.State.Combo_1」の実行中は「Ability.State.xxx」のタグを持つアビリティが実行できないようになり、連打対策になる。
※タグを編集・削除したい場合
タグの編集・削除は [Project Settings > GameplayTags] から行う
4. キャラクターBPにアビリティを登録
コンボを実装するキャラクター(もしくはその親クラス)のBPを開く。
コンポーネントにAbilitySystemを追加する。
初期化部分(EventBeginPlayなど)に下記BPを作成。
コンパイルし、「AbilityClass」変数のDefaultValueを先ほど作成した「GA_Combo_C1」に設定する。
5. キャラクターBPでアビリティを使用する
コンボを実装するキャラクターのBPを開く。
下記のようにBPを組む(仮でPキー入力をコンボを行う)。
MakeLiteralGameplayTagContainerノードの [Edit] をクリックして「Ability.Attack.Combo」を設定する。
これでプレイしてPキー入力した時にAbility.AttackComboという名前のアビリティが実行されるようになり、コンボの1つ目の攻撃ができるようになった。
6. 2つ目のコンボを作成
「GA_Combo_C1」をコピーして「GA_Combo_C2」を作成し、開く。
2つ目の攻撃モンタージュを割り当て、[IsFirstAttack] のチェックを外す。
タグを以下のように設定する。
キャラクターBPの「AbilityClass」変数に「GA_Combo_C2」を登録する。
アニメーション通知を作成
AnimNotifyStateを継承したブループリント「ANS_ReadyAttack」を作成し、開く。
「ReceivedNotifyBegin」をオーバーライドして関数を作成し、以下のようにBPを組む。
次に「ReceivedNotifyEnd」をオーバーライドして関数を作成し、以下のようにBPを組む。
もう一つAnimNotifyStateを継承したブループリント「ANS_BranchAttack」を作成し、開く。
「ReceiveNotifyTick」をオーバーライドして関数を作成し、以下のようにBPを組む。
7. モンタージュに通知を設定
「ANS_ReadyAttack」と「ANS_BranchAttack」を追加。
「ANS_ReadyAttack」は次のコンボへ遷移する入力を取得する期間。
「ANS_BranchAttack」で実際に次のコンボへ移行する。
「ANS_ReadyAttack」の [Detail > Anim Notify > Attack Begin Tag] に「Ability.Ready.Combo_2」を設定する。
以上で、コンボ実装完了。
ブレンドスペースを用いた移動アニメーションの作成
ブレンドスペース、マルチスレッドアニメーション、レイヤーアニメーションを用いた移動アニメーションの設定。
横移動はカニ歩き、ダッシュは前方のみの移動系を想定。
キャラクターの歩行時移動速度は「300」、ダッシュ時移動速度は「900」を想定。
1. ブレンドスペースを作成
2. アニメーションレイヤーを編集
前回の記事の「ALI_AnimLayer」にAnimationLayer「FullBody_MoveState」を追加する。
3. アニメーションブループリントを設定
前回の記事の「ABP_CharacterBase」をベースに編集していく。
「UpdateVelocity」関数に変数「MoveSpeed」と「MoveRight」の設定を追記する。
「SetUpMoveAnim」という関数を新規作成し、以下のように設定。
ステートマシンを以下のように設定。
IdleとMove間の遷移条件はBool型のHasVelocityの値で定義。
「Move」ステートを開き、[MyBlueprint] > [ANIMATION LAYERS] > [Full Body Move State] ドラッグアンドドロップしてつなげる。
「FullBody_MoveState」を開き、以下のように設定する。
「BlendspacePlayer」の [Details] > [Settings] > [BlendSpace] は「Bind」から「Dynamic」に変更しておく