Open24

[UE5.1] ATBTTとRLDBのメモ

hirashinhirashin

斜めに移動できなくする


BP_UnitMovementOptionsPathfinding Type

(古)
~BP_UnitのMovementOptions -> DiamondShapedVisibility~

hirashinhirashin

ターンエンドを手動で押下するまで自動でターンが切り替わらないようにする

Moveアビリティ

Deactivateを外す

hirashinhirashin

行動終了しても勝手にターンエンドにならないようにする

BP_UnitCheck if Exhaunsted をoverride

古い方法↓

BP_TurnManager

BeginNextValidActorTurn外す

hirashinhirashin

ATBTTのユニットのターン終了を呼び起こす

hirashinhirashin

参考になりそうなノード


Get All Actors with Interface

hirashinhirashin

0.セットアップ

移行後の作業

BPI_EventHolder を片方に寄せる(リファレンス置換)

hirashinhirashin

エラーが発生したとき

親のBeginPlayが呼ばれているかを確認

GlobalDispatcherHubアクターが存在しているかどうかを確認

hirashinhirashin

起動時にユニットの移動量をコントロールする

現在のマナをAPに

BP_GridManager


タイルに踏み込んだときに呼ばれる

BP_Ability_Move


MoveCostType を変更

Hidden comment
Hidden comment
hirashinhirashin

TurnManager:NotifyPlayerReady ラウンド開始
TurnManager:NewRound ラウンド開始


TurnManager:BeginActiveFactionTurn 派閥ターン開始


TurnManager:BeginNextValidActorTurn アクターターン開始
TurnManager:RunOnActorDeselected


TurnManager:RunOnActorSelected
TurnManager:RunAfterAbilityExcute


TurnManager:EndTurnFromPlayerInput
TurnManager:EndActiveFactionTurn 派閥ターン終了

hirashinhirashin

セットアップ: ターン制御のためにやること

1. BP_PlayerControllerまたはその子ブループリントを下記のように拡張


ATBTTのターン終了ボタンが押下されたときに、アクティブユニットのフラグを管理

ユニットに下記のActorコンポーネントを装着して追加

(旧)BP_Unitまたはその子ブループリントを下記のように拡張

  • RoundStart/RoundEndイベントを受け取れるようにする。
  • Start時にActionPointを調整
  • End時にフラグ管理

Check if Exhausted をoverride

通常はAP==0のときに勝手にターンが終了してしまう。

hirashinhirashin

Abilityごとに攻撃範囲を変える

アビリティのUseUnitAttributesをfalseに設定してみて、ご希望の結果が得られるかどうか確認してみてください。次に、アビリティでRange変数を設定します。

攻撃可能タイル判定

hirashinhirashin

Cooldown

利用間隔制限。1ターン経過すると1減少する。
たとえばクールダウンを1に設定すると次のターンまで再利用できなくなる。

Charge

利用回数制限。そのアビリティを使える回数を制限する。
たとえば3に設定するとそのアビリティは戦闘中3回までしか使えない。

hirashinhirashin

[不具合] カードが配られないとき

  • Gameplay Tagsの設定を見直す
hirashinhirashin

マナの初期値を変更する(他のStatusの初期値も)

BP_CardPlayer > BP_Status_ManaGain > クラスのデフォルト > Status Value

Hidden comment
hirashinhirashin

StatValueについて

DT_Units.MaxStatusはなぜか初期値が1000000.000000 とかになる。
普通にDT_Units.Statsを使う。