2017年 12月31日
エフェクトの素材は極力借りる事にして、まずどういうエフェクトかチェックする「エフェクトチェッカー」を作った。
別にサイトのサンプルで決めてもいいし、RPGツクール用なんだろうから普通はそちらでチェックできるんだろうけど、こちらは HSPだからねえ。
こんな感じ
← →でエフェクト切り替え
↑で表示開始
↓でアニメの切り替え時間変更
fpcって書いてある数字だけど、自分の場合 fpsは 20で固定している(1秒に
20回表示)ので、これは何回カウントしたら次の表示にするかになってる。
つまり 2だったら fps10相当のスピードになる。
spaceキーで反転表示切り替え
tabと Enterで表示濃度を +-する
ctrlキーで透明と加算を切り替える
透明は gmde3、加算は gmode5、透明の 255濃度で 100%上書き表示になる。
加算は光ったような表示になるが、背景が明るいと見えづらい。
数字キーの 1、2、3で表示の仕方を変える
1は一回だけ、2は繰り返し、3は表示が終わったら次のエフェクトに順次移る。
数字キーの 4、5で回転表示を +-する
赤い数字がそれ
緑表示の x、yは画像の大きさ、aはアニメの数だ。
右下の窓は、そのエフェクトの背景が透明かそれ以外か見るためのもの。
なぜかと言うと、透明だと加算でなくても背景色を抜いてくれるのだが、例えば背景が黒だと抜いてくれないらしい。
こんな感じ
(「表示」の所に透明と加算と切り替えて書いてあるのに注意)
この場合、加算表示で使う事になる
妖精の上にも表示しているが、背景が明るいと分かりづらいと思う。
ではソースを公開する
/////// エフェクトチェッカー //////////////////////////// ;Effects Checker ; 操作説明 ; ↑ : 表示開始 ; ← or → : グラNo.切り替え ; ↓ ; コマ送りウエイト数増減 ; Tab or Enter ; ブレンド率増減 ; Ctrl ; 透明、加算、切り替え ; space ; 反転表示切り替え ; 1 ; 連続表示切替、1回 ; 2 ; 固定連続 ; 3 ; 送り連続 ; 4 ; 回転+ ; 5 ; 回転- #include "hsp3dish.as" gosub *main : end #deffunc put ; 表示 ------------------------------------ redraw 0 color 0,0,0 : boxf : color 255,255,255 pos 30,12 : mes ps(pn) gmode 2 pos x1 ,y1 : celput 1001,gr(0) pos x1+96 ,y1 : celput 1001,gr(1) pos x1+192,y1 : celput 1001,gr(2) gmode pm,,,br ; グラのブレンド率 if f=1 : pos x1-20+pcx(pn),y1+5+pcy(pn) : celput pn,c,hx(hn),hy(hn),kai pos x2-20+pcx(pn),y2+5+pcy(pn) : celput pn,c,hx(hn),hy(hn),kai pos x3,y3 : mes "No, "+pn ; グラNo. pos x3,y3+40 : mes hxys(hn) ; 反転表示 pos x3,y3+80 : mes "表示 "+hp(pm); 半透明、加算、フラグ pos x3,y3+120 : mes "濃さ "+br ; ブレンド率 pos x3,y3+160 : mes "fpc "+fpc ; コマ送りウエイト pos x3,y3+200 : mes "cnt "+c ; 表示フレーム color 255,96,96 pos x4,y3+120 : mes kai ; 回転率表示 ; 連続表示モード if rhm=1 : color 160,160,255 : else : color 192,192,192 pos x4,y4 : mes "1 1回" if rhm=2 : color 160,160,255 : else : color 192,192,192 pos x4,y4+30 : mes "2 固定" if rhm=3 : color 160,160,255 : else : color 192,192,192 pos x4,y4+60 : mes "3 送り" ; 抜き色チェック color 128,128,128 : boxf 410,260,640,360 gmode 2 pos 430+pcx(pn),270+pcy(pn) : celput pn,c ; データ color 96,255,96 pos 560,12 : mes "x "+px(pn) pos 560,12+30 : mes "y "+py(pn) pos 560,12+60 : mes "a "+pa(pn) redraw 1 if f=1 : c2+ : if c2=fpc : c2=0 : c+ : if c>=pa(pn) { c=0 if rhm=1 : f=0 ; 1回 if rhm=2 : ; 固定連続 if rhm=3 : pn+ : if pn>gb : pn=1 ; 送り } return *main ; メイン -------------------------------------------- randomize ; 乱数発生 gosub *gr_data ; グラ読み込み celload "../chara.bmp",1001 ; 枠 celdiv 1001,80,130 font "",28 ; 文字の大きさ x1=80 : y1=200 ; 表示座標 x2=80 : y2=55 x3=420: y3=12 x4=545: y4=164 hp="","","","透明","","加算" hx=1.0,-1.0,1.0,-1.0 ; 表示反転データ hy=1.0,1.0,-1.0,-1.0 hxys="正表示","左右反転","上下反転","全反転" kai=0.0 ; 回転 f=0 ; 表示中フラグ pn=1 ; グラNo, pm=3 ; 半透明、加算、フラグ br=255 ; ブレンド率 rhm=1 ; 連続表示モード(1=無、2=pn固定、3=pn順送り) c=0 ; アニメカウンター c2=0 ; コマ送り数カウンター fpc=1 ; 何フレームで1コマ送るか repeat 3 ; 使用mobグラ gr(cnt)=rnd(200) loop repeat ; メインルーチン k=0 : stick k,1+4+32+1024 if k=4 : pn+ : c=0 : c2=0 : if pn>gb : pn=1 ; グラNo.切り替え+ if k=1 : pn- : c=0 : c2=0 : if pn<1 : pn=gb ; グラNo.切り替え- if k=2 : f=1 ; 表示開始 if k=8 : fpc+ : c2=0 : if fpc>4 : fpc=1 ; コマ送りウエイト数 if k=64 : if pm=3 : pm=5 : else : pm=3 ; 透明、加算、切り替え if k=32 : br+ : if br>255 : br=0 ; ブレンド率+ if k=1024 : br- : if br<0 : br=255 ; ブレンド率- if k=16 : hn+ : if hn>3 : hn=0 ; 反転表示切替 getkey k2,49 : if k2 : rhm=1 ; 連続表示モード切り替え getkey k2,50 : if k2 : rhm=2 getkey k2,51 : if k2 : rhm=3 getkey k2,52 : if k2 : kai+=0.1 ; 回転+ getkey k2,53 : if k2 : kai-=0.1 ; 回転- getkey k2,27 : if k2 : return put await 1000/20 loop return #deffunc pds ; データセット pcx(gn)=px(gn)/2 ; 中央x pcy(gn)=py(gn)/2 ; 中央y celload "../pic/"+ps(gn),gn ; 画像読み込み celdiv gn,px(gn),py(gn),pcx(gn),pcy(gn) gn+ return *gr_data ; グラフィックデータ ---------------------------- pb=300 ; エフェクト数 dim px,pb ; 大きさx dim py,pb ; 大きさy dim pcx,pb ; 表示座標x dim pcy,pb ; 表示座標y dim pa,pb ; コマ数 sdim ps,30,pb ; グラ、ファイル名 gn=1 ; グラNo. ps(gn)="pipo-btleffect001.png" px(gn)=120 : py(gn)=120 : pa(gn)=5 pds ps(gn)="pipo-btleffect002.png" px(gn)=120 : py(gn)=120 : pa(gn)=9 pds ps(gn)="pipo-btleffect003.png" px(gn)=120 : py(gn)=120 : pa(gn)=5 pds gb=gn-1 ; 最大 return
HSPヘコピペすればそのまま使えると思う。
もしバグがあっても各自で対処してください、ハハ。
画像は 2次配布に当たるので、それぞれで用意してください。
これの欠点と言うか、データを全部手入力しなければいけない事。
延々と書かなければいけない(もちろんコピペして修正していくんだけど)
後はデータセットの部分のファイル名
celload “../pic/”+ps(gn),gn ; 画像読み込み
これは一つ上のフォルダに戻って、別の picフォルダに移るという意味だから、ソースと同じフォルダに画像フォルダを置くなら
”pic/”
フォルダを使わずにソースと同じ場所に画像を置くなら、単に
””
となる。
あ、そうそう、それと画面下の方のカード画像は人によって違うだろうから、各自で用意して、ソースもランダム表示になってるけど、その部分は改造してね。
という訳で、自分はこれを見ながらどのエフェクトを使うか選ぶ事にする。
次回の課題は戦闘プログラム中に、どうエフェクト表示を差し込んで、エフェクトのウエイト時間を取るかだねえ、う~ん頭いたい。