忍者ブログ
かわいいは正義。いい時代になったものだ。
[932] [931] [930] [929] [928] [927] [926] [925] [914] [924] [923]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

こちらも参照

AI戦中に、歩き、ジャンプ、しゃがみ、ガードが意図しない時にやってしまっていることがないだろうか。
(かくゆう私も以前D氏北斗キャラを改変していた時に,ブースト中にキャラがブーストをやめてしまうという事態に遭い,頭を悩ませたことがある)
この現象は、mugenの仕様が原因である。
長くなるので、詳細及び防止方法は続きから

拍手[2回]


+ + + + + + + + + +

歩き、ジャンプ、しゃがみ、ガードをAI製作者が意図しない時にやってしまうという現象。
この原因は、mugenの内部のAIとコモンステートの仕様である。

・mugen内部のAIはコマンドからランダムに選んで実行しているという性質がある。
・歩き、ジャンプ、しゃがみ、ガードへの移行は、ステート内には書かれていない(mugenに内蔵されている)ため、通常追加するAIオフという条件を追加できない。

これらから、歩き、ジャンプ、しゃがみ、ガードが勝手に・・・ということが起こっている。

というわけで、以下ではこれらを制御する方法を書いていく。

さて,まずは該当アクションが起こらないようにする必要があるため,changestateにより制御する。

どこに入れるかだが,候補は2か所

1.常時ステート
2.しゃがみや歩きなど各ステート全部

どちらにするかはお好みでどうぞ

1.常時ステートに追加

[statedef -1] or [statedef -2] or [statedef -3] いずれかの直下に以下を追加

[State -1, 勝手に・・・防止]
type = ChangeState
triggerall = var(59) > 0 ; AIフラグの変数
trigger1 = state = [10,11] ;しゃがみ開始,しゃがみ
trigger2 = state = 20 ;歩き
trigger3 = state = 40 ;ジャンプ
value = 0
ctrl = 1

2.しゃがみや歩きなど各ステート全部に追加する

[Statedef 11];しゃがみ
[Statedef 20];歩き
[Statedef 40];ジャンプ
など,AIに行わせたくないステートの初めに以下を追加する
※キャラによっては複数のファイルに記述されている場合があるが,
 st0>・・・>st9>stcommonという優先順位になっているので注意
 また,同ファイル内に複数あった場合は,"上の方が優先される"ので注意
※[statedef -1] と異なり,パラメータが記述されているため,その下に追加する

[State -1, 勝手に・・・防止]
type = ChangeState
trigger1 = var(59) > 0 ; AIフラグの変数
value = 0
ctrl = 1

以上である。
このChangeStateは,該当ステートに飛んだ際に,立ちステートへ戻すというものである。
※statetypeやpos yやctrlに関係なくctrl = 1の立ち状態にするため,適宜修正してください

したがって,この場合はしゃがみや歩き等が出来なくなるため,AIに該当アクションをさせたい場合 新たに記述する必要がある。
(単純に,コピペしてstatedefの数字を変えて,AIでそのステートに飛ぶようにするだけなので割愛)

これで完了である。


・・・さて,ここまでやって解決しねえ?!
という人はいないだろうか。

そんな人はこんなことになっているのではないだろうか。

「ブーストして画面端まで行こうとしてたのに,急に何故か立ち状態になって止まってしまった」
(※私の例改変)

(こんなんじゃねえ,と言う人はごめんなさい)


さて,ではこの問題を解決していこう。

まず,mugenの内部処理での歩き、ジャンプ、しゃがみ、ガードの移行条件は(おそらく)以下の通りである。
・command = "up" or "down" or "fwd" or "down" が真(1)になる(該当の方向キーが押されると同様・それぞれジャンプ,しゃがみ,歩きorガードの方向に相当)
・ctrl = 1である
・statetype = S || statetype = C
・ガードの場合,InGuardDist=1である

この内,commandの方は,mugenのAI仕様から諦めるとして,
ctrl = 1の方に注目してもらいたい。

そう,ctrl = 1である。
該当ステートがこうなっていないか確認する必要がある。

確認は簡単である。

[statedef 1000]

ctrl = 1 ←これ

この解決法であるが,以下の通りである。

1.該当ステートをコピペし,statedefの数字を変え,
 ctrl = 0にする+AI時はそのステートに飛ぶようにする
2.ctrlの部分を以下の通りにする
ctrl=ifelse(var(59)>0,0,1) ;IF文でAION時には0,OFF時には1になるようにする


※ついでに,下の方にスクロールしてステートの残りの部分も見ておこう
 commandがトリガーになっているものがたまにあるのでAIフラグを入れておこう

以上の作業が終わったら,確認して,解決したら終了である。
PR
この記事にコメントする
お名前
タイトル
文字色
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
管理人のみ閲覧可能にする    
ブログ内検索
プロフィール
HN:
HIDE.MF
性別:
非公開
職業:
趣味:
MUGEN,AC北斗
自己紹介:
読み:ハイドエムエフ

ここはMUGEN用ブログ
mugenで製作したものとかその他色々書いてます

リンクフリーです。
最新記事
(11/11)
(11/10)
(01/03)
(12/31)
(12/11)
最新CM
[09/23 vesper]
[12/22 Ts]
[12/22 Ts]
[12/19 Ts]
[12/18 Ts]
最新TB
カレンダー
03 2017/04 05
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
カウンター
バーコード
P R
ツイッター
フリーエリア
Powered by ニンジャブログ  Designed by ゆきぱんだ
Copyright (c) 可愛いの拳 All Rights Reserved
忍者ブログ / [PR]