はじめに
Oreno Combat AIに実装した敵のドッジ機能に関するまとめです。
敵にドッジさせる方法
ActorにIdleをPlayさせます。
アニメーションさせることについては特定のモーションをとらせる(今からSkyrim)が詳しく解説してくれています。
ドッジのIdleはTUDMやTK DodgeならプラグインのIdle Animationにあるので、それをスクリプトに紐づけて使います。
防御できなくする
ドッジに攻撃を合わせても防御されてしまうので、おかしいです。
Idle Animationの防御の条件に「ドッジ中ではない」を追加して実現しました。
ドッジ中を判定する方法は色々あると思いますが、アニメーション変数を用意することにしました。
任意のアニメーション変数を追加するにはBehavior Data Injectorを使います。AEの場合はBehavior Data Injector Universal Supportも必要です。
定義ファイルを作成します。
[
{
"projectPath": "Actors\\Character",
"type": "kBool",
"name": "bNoBlock",
"value": false
}
]
このbNoBlockが1なら防御不可ということにします。
このアニメーション変数の操作はスクリプトにて行うことにしました。
MySelf.SetAnimationVariableBool("bNoBlock", true)
面倒なのでやりませんでしたが、hkxファイルに仕込めばスクリプトの処理を減らせるので遅延が減っていいかもしれません。
防御のIdle AnimationのConditionに「bNoBlockが0である」または「Playerである」を追加します。Idle AnimationはPlayerとNPCで共通なので、Playerには影響がないようにします。
当該Actorのアニメーション変数の確認はコンソールで行えます。
DGV bNoBlock b