スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HumantouchNPC 射線確保のアルゴリズム改善

HumantouchNPC v1.6 で搭載した射線確保のアルゴリズムを改善したい!
ということでいろいろ実験しているので、自分の中で整理するためにも記事にしました(´Д`;
 


HumantouchNPC_v19_00.gif



HumantouchNPC_v19_01.gif



HumantouchNPC_v19_02.gif



図解の通りなのですが、発想を逆転させて「自分で射線を確保しようとする」のではなく
「仲間の移動によって射線を確保してもらう」という方式にしようかと思います。
v1.6同様、矢や魔法の発射途中で射線に仲間がいることを確認できた場合には中断します。
中断も今までは見た目そのままで矢/魔法だけが発射されないという謎の空撃ち状態でしたが、
v1.9からはそれらしいモーションを再生させようと思います。




射線が欲しい側は基本的に敵の遠くにいるはずなので
扇状に移動する際の円周が大きくなってしまいます。
なので、射線が欲しい側が激しく横ダッシュして射線を確保するよりも
射線上にいる側が少し横ダッシュした方が効率がよいということに気付きました (゚∀゚)

HumantouchNPC_v19_03.gif
「射線が欲しい側は補助的な移動(横歩き)」
「射線上にいる側が逆方向への積極的な移動(横ダッシュ)」にしようと思います。
スポンサーサイト

コメント

非公開コメント

No title

ああ、仲間が動いてくれるのは良いですね。より連携してる感じがして!

No title

1.8を使わせてもらっています、かゆい所に手が届く機能が多く非常にありがたいです
斜線確保ですが、私は攻撃誤射では無くMPCコンパニオンのヒール誤射防止に使っています

しかし解説にもあるように狭い通路の場合敵との適切な間合いを取りながら戦闘をしていると
必ずと言っていいほど「PC MOB コンパニオン」という配置になってしまいます
そしてヒールを延々とMOBにされてしまうわけです、仕方ないので走って離れてfollow魔法詠唱してその場に召喚し直しています
斜線を確保出来ない場合飛び道具や魔法を使わないor近接攻撃に切り替えるという行動は制御出来ないでしょうか?

あと別の話になりますがMPCを休ませていると良く本を読むのですが、松明を持たせていると必ず松明を所持して本を読んでしまいます、しばらくすると松明をしまうのですがこういう点を制御する事は出来ないでしょうか

コメントありがとうございます

ゆうひいろさん、コメントありがとうございます。
当初は今までの処理(射線が欲しい側の移動)は完全に削除して
射線上にいる仲間が動くだけの処理にしようかと思っていたのですが、
ゆうひいろさんから頂いたコメントを拝見して考え直しましたw
相互的に対処して動くようにしてみます。

774さん、コメントありがとうございます。
拙作のMODを使っていただいてありがとうございます!

射線確保の機能ですが、これは
「アクターが攻撃目標としてロックオンしている状態の敵」を判別して
その敵との射線を確保する機能なので、
仲間に対するmpcのヒール用に射線を確保というのは想定外となっています。
(mpcがいつ誰にヒール魔法を発射するかは他のMODからは判断不可能なので)
「PC MOB コンパニオン」という配置になるのは
射線確保のアルゴリズム的には理想の結果となっています (つД`)
私の場合はmpcのヒール機能(詠唱者から標的魔法が発射されて誰かに当たる)は使わず、
HumantouchNPCのヒール機能(相手の頭上から降ってきて他人に当たりづらい)を使って
敵への誤爆ヒールを回避させています。

松明については、普段NPCに持たせていないので気付きませんでした。
いろいろ挙動を調べてみて、対応できそうでしたらやってみますね。

松明装備に関して

松明の装備に関していろいろ実験したのですが、
この「NPCが所持している松明を装備したり外したりする」という処理は
MODではない見えないどこか(オブリの内部処理?)が勝手にやっているようで、
例えその時点でAIパッケージの変更などが一切行われていなくても
一定周期で自動的に松明が装備されたり解除されたりしてしまうようです。

よって、MODで判定して「今は松明を外すべきだから松明の装備を解除」とやっても
しばらくするとオブリ自身の処理によって再び強制的に装備されてしまいます。

ということで、NPCの松明装備変更に関わる処理は実用レベルでの実装が不可能っぽいです、
ゴメンナサイ (つД`;

No title

検証ありがとうございます、参考になりました
また質問になるのですが、Update3Dを使って小さいキャラがベッドや椅子にめりこむのを自動的に修正することは出来ないでしょうか?

No title

> 松明所持
逆転の発想で家内のcellの時は松明をどこかに回収してしまうとか・・・?
町のcellで回収しちゃうとガードの松明まで巻き込みそうなので。

> 小さいキャラがベッドや椅子にめりこむ
のはおそらく小さいせいで参照してるモーションの高さが合わないのが原因のはずなので
update3dを使うにしても新規にモーションを用意しないとダメなんじゃないかなぁ・・・

コメントありがとうございます

ゆうひいろさん、アイディアありがとうございます。
HumantouchNPCの処理はアクターに持たせたアイテムのスクリプトで行っている都合上
プレイヤーと遠距離になった場合はスクリプトが一切動作しなくなってしまうのです。
なので今現在プレイヤーの近くにいてスクリプトが動作して松明を回収したとしても
プレイヤーが別の屋内やファストトラベルでどこかへ移動した際には
松明を元に戻すべき判定を行うことができないままスクリプトが停止してしまいます。
また松明関係の処理はオブリ内部処理に大きく依存していて動作が不安定なので
無理して制御したくないというのも今回検証した結果での本音です(つД`;

774さん、コメントとアイディアありがとうございます。
ベッドにめり込む現象に関しては、ゆうひいろさんも仰っているように
モーションデータとしては正しい結果なのでUpdate3Dでは対処できないです。
ただ逆に考えるとモーションではなく座標を調整するだけで対処できそうなので
こちらで検証して実装を検討させて頂きます!
プロフィール

r_basilico

バジリコ風味 (r_basilico)
Twitter: r_basilico
Steam: r_basilico
艦これ: 嫁艦は祥鳳

リンク
最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。