2010年11月11日

HitDef等のgetpower、givepowerの省略

HitDef等には、それがヒットした時、ガードされた時に自分と相手のパワーゲージを
増加させるパラメータ、getpowerとgivepowerがありますが、
これらを省略すると一体どうなるのでしょう。
とあるサイトでは省略すると全て0になってゲージが増えないと説明されていますが、
明らかにゲージが増えています。

そこで詳しく調べてみようと思います。続きは↓で。

続きを読む
posted by リック at 17:49 | Comment(2) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする

2010年11月06日

物凄くわかりづらいミス

さて、突然ですが問題です。
以下のステートコントローラーをご覧ください。

[State-2, GameTime式ステート抜け]
type = SelfState
value = var(0)    ;直前のステート番号
ctrl = var(0)=0||var(0)=50||(var(0)=[130,132])  ;ctrlのつくコモンステート
triggerall = !IsHelper
triggerall = Alive
trigger1 = var(1) != GameTime
ignorehitpause = 1

実はこれ、あるとんでもないミスをしています。
それは一体何でしょうか。
「ctrlが付くステートは他にもあるだろう」とかそういうレベルではありません。
大げさにいえば、論外キャラのつもりで作ったキャラがあっさり死ぬくらいのレベルです。

答えは↓の続きにて。

続きを読む
posted by リック at 01:01 | Comment(0) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする

2010年11月05日

パートナーへのリダイレクトを1行で

敵へのリダイレクトであれば、例えば敵のどちらかが死亡しているというトリガーは

trigger1 = !Enemy(0),Alive
trigger2 = NumEnemy > 1
trigger2 = !Enemy(1),Alive

こんな記述になりますが、これを

trigger1 = !Enemy(0),Alive
trigger2 = !Enemy(NumEnemy),Alive

こんな風に書けば文字数が少なくて済みます。
同じようにして、敵全員が死亡しているというトリガーを作る場合

trigger1 = Enemy(0),Alive = 0
trigger1 = Enemy(NumEnemy),Alive = 0

このように書けます。このような記述はNumEnemyを確認してでは一気に行えません。
もし一番上のような記述法でエラーを出さずに書こうとすれば、

trigger1 = NumEnemy = 1
trigger1 = !Enemy(0),Alive
trigger2 = NumEnemy > 1
trigger2 = !Enemy(0),Alive
trigger2 = !Enemy(1),Alive

このように記述しなければなりません。非常に面倒です。

さて、この辺りは多くの製作者の知るところなのですが、
同じ要領でパートナーへリダイレクトする方法についてちょっと書いてみます。
続きは↓で

続きを読む
posted by リック at 21:59 | Comment(2) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする

2010年11月03日

AttackDistとChangeState

AttackDistのステコンは、自分を原点として前方向に、
valueで指定された値よりも相手が近くにいる時だけ
相手がガードモーションを取れるという効果を持ちます。
専門用語を使うならInGuardDistが発生する、ということです。
HitDefのステコンでも、guard.distを指定することで任意に変えることができます。

さて、このAttackDistの効果なのですが、実はChangeStateまたはSelfStateを使うと
その効果がリセットされてしまうという
面倒な仕様があります。
HitDefと同じようにステート移動をした後にこの効果が残っているとまずいかも、
という判断でこのような仕様にしたとは思いますが、正直不要でした。
InGuardDistはこちらのMoveTypeがAでないと発生しないのですから、
ステート移動をした先のMoveTypeがAでなければいいだけです。
移動先が攻撃用のステートなら結局InGuardDistを発生させる必要がありますので、
前のステートのAttackDistをリセットする必要性はほとんどありません。
一応リーチの長い攻撃から短い攻撃へキャンセルをかけた時には役に立つのですが・・・
おまけにHitDefと違って、Statedef冒頭のパラメータに
AttackDistPersist(1にするとAttackDistをリセットしないというパラメータ)
なるものはありません。これがあればこの問題を一気に解決できたんですけどね。

普通のキャラを製作する上でこの仕様は気にしなくてもいいのですが、
神キャラで時々使われる準ステート固定(毎フレームあるステート{大抵はガードステートか死亡ステート}に最終的に留まるようにすること)の時にこの仕様が非常に邪魔になります。

ジャッキーといろんなキャラを戦わせていた時に、
時々相手が、こちらが何も攻撃をしていないのにガードを取ることがありました。
どうやらこの仕様で、通常ステートでAttackDistを0にしたヘルパーが、
準ステート固定で死亡ステートに移動した時に効果がリセットされ、
相手側にInGuardDistが発生してしまっていたようです。
ヘルパーのMoveTypeをAにして準ステート固定をする時は気を付けないといけませんね。

posted by リック at 12:45 | Comment(0) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする

2010年10月29日

削りKOの感知

MUGENのキャラを製作されている方なら、例えば削りでKOされた時と
通常のヒットでKOされた時とで演出を別にするキャラを作りたい場合、
ガードしていたのにKOされた時、それが削りなのか崩されたのかをどうやって判別するか
非常に悩むことがあったかもしれません。

人によっては非常に重要な問題、どうすればいいのでしょうか、続きはweb(↓)で

続きを読む
posted by リック at 01:05 | Comment(0) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする

2010年10月26日

Statedef冒頭でのパラメータ省略

そのステートに来た時に一度だけ実行される冒頭の記述がありますが、
これらを省略するとどうなるのかを下に記してみます。

[Statedef XXX]
type = S
movetype = I
physics = N
anim = -1
ctrl = ctrl
juggle = (前のステートの物を受け継ぐ?)
velset = Vel X, Vel Y
poweradd = 0
sprpriority = (変化なし)
facep2 = 0
movehitpersist = 0
hitdefpersist = 0
hitcountpersist = 0

もしかしたら間違っているのもあるかもしれません。
特にjuggleは本体付属のドキュメントファイルを読むとこういう風に書いてあるだけなので確認していませんし、そもそも英語をちゃんと読めているのかが微妙です(笑)
試していませんが-1にすると同様の効果になるかも。
sprpriorityは恐らく数値での代用はできなさそうです。
ちなみにfacep2は0以外にすると自動的に相手の方向を向きます。意外と知られてなさそうなパラメータです。

注目したいのが上の4つ。
意外にもtype、movetype、physicsはU(変化なし)ではありません。
キャラを製作していて変化なしにするのを意図して省略すると思わぬ不具合がでるので注意。
そしてanimですが、-1で変化なしの効果が出ます。
神キャラ等では大抵、ステート冒頭のanimの部分は省略してステートの最初あたりに

[State 200, アニメーション変更]
type = ChangeAnim
value = 200
trigger1 = Anim != 200

この記述を入れてタゲステを受けた場合にステ抜けで元のステートに復帰してもアニメーションがリセットされず、何も起きていないように見せるようにしていることが多いです(ステート冒頭にanim=200を入れるとステ抜け時に再びそれが読み込まれてリセットされる)。
しかし、ステートの冒頭に

[Statedef 200]
anim = -1 + (Anim!=200)*(1+200)

とだけ記述すれば同じ効果が得られます。
これによってかなり記述を簡略化することができるのではないでしょうか。
まあもう知っている方も多いかもしれませんから「何大発見みたいに言ってんの」とか言われそうですが。
ちなみにChangeAnimのステコンでvalueを-1にしてもエラーが出ます。
posted by リック at 12:07 | Comment(0) | MUGEN豆知識 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。