angledrawを用いた回転&拡大縮小について

演出を入れるにあたって、エフェクトの回転や拡大縮小はある意味必須です。
で、これらはHelperやExplodで行うわけですが、
Helperは回転、Explodは拡縮のみしかできない…のがDos版でした。
しかし、Win版ではangledrawにscaleというパラメータが追加されました。
したがって、Helperを使えば拡縮と回転を同時に処理することが出来ます。

例えば拡縮と回転が同居する処理として、カプエス2のスパコン(カプコン側)のLv.2&3で追加されるエフェクトがあります。
(←てきとーに縮小してあります)
このような4種のエフェクトが拡縮&回転しながらかつ6方向に向けて表示されます。
(上記の画像は実際に表示されるパターンの中から適当に抽出したものなので、元画像とは多分異なります)
で、Helperにangledrawで角度とサイズを変更しながら表示させると、

こんな感じです。
ちなみに真中の回転してるエフェクトも、一枚を一定の大きさまで段々縮小させながら回転させてます。
SNK側の超必エフェクトも、似た感じで作ってます。

で、ここからは注意点です。

・Helperにアニメを設定すると、本体と同様に影が表示されます。
したがって、影が不要の場合はassertspecialのnoshadowを使ってください。

・angledrawを使用すると、airの透過記述が無効化されます。
したがって、透過処理を使用したい場合はcns側で改めてtransを使用してください。

・angledrawのscaleは、元々のscaleにそれぞれ乗算されます。
どういうことかというと、scaleをx=2、y=2で生成したHelperでangledrawでscale=2,2にすると、トータルでx=4、y=4のサイズになる、ということです。
また、Helperを生成する際にsize.xscaleとsize.yscaleを指定しない場合、[Size]の項目に準拠することになります。
CPSキャラのようにサイズを変える可能性がある場合、演出に影響が出ないようHelperのsizeをキチンと設定しておいた方がよいと思います。

・HelperはExplodと違ってontop=1の優先度に出来ません。
こればかりは諦めてExplodで使えるような画像を用意するしかないです。

・HelperはExplodと違って直接画面上の座標に置くことが出来ません。
(「画面の120,30の位置に表示」のような感じ)
もし置いたりそのまま固定したりする場合は、別途処理を組む必要があります。
私が組んだ処理は以下のような感じです。

;---------------------------------------------------------------------------
;Helper生成処理(この処理はHelperを生成する側に作ります)
[State 9000, HyperComboFinish]
type = Helper
trigger1 = time = 0
ID = 9001
stateno = 9001
postype = P1
pos = ceil((319-ScreenPos X)-160)*facing,ceil((239-ScreenPos Y)-120)
pausemovetime = 999999
supermovetime = 999999
size.xscale = 1
size.yscale = 1


;---------------------------------------------------------------------------
;座標固定処理(この処理は回転や拡縮するHelper内に作ります)
[State 9001, PosAdd]
type = PosAdd
trigger1 = time > 0
x = -ceil(ScreenPos X-fvar(1))
y = -ceil(ScreenPos Y-fvar(2))


[State 9001, VarSet]
type = VarSet
trigger1 = 1
fvar(1) = ScreenPos X

[State 9001, VarSet]
type = VarSet
trigger1 = 1
fvar(2) = ScreenPos Y

;---------------------------------------------------------------------------

最後に、情報提供いただいたPhantom.of.the.Server様に感謝々々です。

■トップへ戻る