Win&1.0共用でワイド画面に自動で対応できる方法(x座標)


最終更新日 2021/06/05

WinMUGENでは画面サイズが640×480固定なのに対し、MUGEN1.0では自由に画面サイズを変更できます。
しかし、記述の仕方によっては1.0でワイド画面(800×480、1280×720等)にするとゲージ、エフェクト、カットイン等の表示がずれてしまいます。

MUGEN1.0には"GameWidth"や"GameHeight"というパラメータがあり、
"GameWidth"は画面の横サイズ、"GameHeight"が画面の縦サイズが識別できます。

1.0専用でキャラを作る場合はそれらを使用すれば簡単に画面中央を指定できますが、winMUGENでエラーが出て使えなくなってしまいます。
ですが、ヘルパーを使えば1.0専用ステコンを使用しなくても画面サイズ(x座標)を判別する方法を見つけましたので解説します。

あくまでwinと1.0共用できるようにと自分が使用している方法なので、他にもっと簡単な良い方法があるかもしれません。
ですので方法の一つとして捉えていただけると幸いです。

まず、-2か-3ステートに
例として

[State ]
type=Helper
trigger1=numhelper(3000)=0
helpertype=normal
name="main helper"
ID=3000
pos=0,0
postype=right
stateno=3000
supermovetime=99999999
pausemovetime=99999999

というようなヘルパーを一つ出します。
※postype=right、pos=0,0で出現させているのがポイントです。

そしてそのヘルパーで

[State ]
type=parentVarset
trigger1=time=0&&root,RoundsExisted=0
var(42)=ceil(screenpos x/2)

というように"time=0"でvarsetをします。
value値をこのようにすると、画面横サイズの半分の値がセットされます。
ようするに横画面のちょうど半分(真ん中)ということなので画面中央の数値になるわけです。

※ ↓ 2021/06/05 追記
ステージによって、稀に160以下の数値にセットされてしまう不具合がありました。
その不具合を回避するため

[State ]
type=parentVarset
trigger1=time=0&&root,RoundsExisted=0&&root,var(42)<160
var(42)=160

↑ この記述も入れると万が一160以下になってしまっても、最低値を必ず160にする事が出来ます。
160以下になると左にズレてしまうので、こちらの記述もセットで追記した方が良いです。

自分はこの数値を本体のvarにセットするためparentvarsetを使ってますが、ヘルパーのvarでもいいかもしれません。
これで画面中央のpos x値のセットは完了しました。

これを利用して画面中央にカットインを表示させるには

[State ]
type=Explod
trigger1=time=0
anim=1000
postype=left
pos=var(42),0

というような感じでpos x値に格納したvarを指定すればOKです。



わかりづらいかもしれませんが、カットインが画面中央に表示されています。
これでGameWidthを使用しなくてもwinMUGEN、MUGEN1.0でどの画面サイズでも自動で対応できます。

向きが反対の時にカットイン等も反対になる時は

[State ]
type=Explod
trigger1=time=0
anim=1000
postype=right
pos=-var(42),0
facing=-1

等にするといいと思います。

出現させたヘルパーですが、本体のvarに数値をセットした後に消した方が良いと思います。
常駐ヘルパーを利用する場合はもちろんそのままでOKですね。

次に特殊ゲージですが、
特殊ゲージを搭載しているキャラで表示のさせ方はほぼ皆さんexplodで表示していると思います。
この時、記述の仕方によっては1.0でワイド画面にした時に2P、もしくは1Pのどちらかのゲージがずれて表示される場合があります。



[State ]
type=Explod
trigger1=time=0
anim=1000
postype=left
pos=ifelse(teamside=2,320,0),0
facing=ifelse(teamside=2,-1,1)

こういった感じで、left基準でifelse等を使用して2P側のゲージを表示している場合、上記のように2P側のゲージがずれて表示されます。
ですので、これを

[State ]
type=Explod
trigger1=time=0&&teamside=1
anim=1000
postype=left
pos=0,0
facing=1(省略可)

[State ]
type=Explod
trigger1=time=0&&teamside=2
anim=1000
postype=right
pos=0,0
facing=-1

このように1Pと2Pを分けて
1Pはpostypeを"left"、2P側は"right"にすると



このように1Pは左端、2Pは右端が基準になるので特に拘った記述をしなくても簡単にワイド画面に対応することができます。

その変わり、記述量が増えてしまいますので、容量が気になる方は
前述の画面中央値を使用すれば一つのステートコントローラでも表示可能だと思われます。

ただ、winと1.0ではright座標の基準値?に1ドットのズレがあるようです。
1.0の方がwinより左に1ドットずれて表示されています。

画面をキャプチャして片方を透明化する等にして重ねるとズレて表示されているのがわかると思います。
left座標にするとピッタリ表示されるみたいなんですが…。謎の仕様変更ですね。

ちなみにゲージをヘルパーから表示させると、localcodeが違うキャラにP2stateno等でステートを奪われた際に
相手のlocalcodeに影響を受けなくなる?ようです。
(ゲージがズレたり、サイズが変になるバグが無くなる)

最後に、申し訳ないのですが、今回、x座標は中央指定できたのですが、y座標だけはどうやっても中央指定できませんでした。
その方法もわかれば、画面の中心点をwinMUGEN、1.0共用で識別することができるのですが…。

戻る

TOP


※ 2023/07/26 アクセスカウンター設置


inserted by FC2 system