エフェクトチェッカーを作った


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/”

 フォルダを使わずにソースと同じ場所に画像を置くなら、単に
 ””

 となる。
 
 
 あ、そうそう、それと画面下の方のカード画像は人によって違うだろうから、各自で用意して、ソースもランダム表示になってるけど、その部分は改造してね。
 
 
 という訳で、自分はこれを見ながらどのエフェクトを使うか選ぶ事にする。
 
 
 次回の課題は戦闘プログラム中に、どうエフェクト表示を差し込んで、エフェクトのウエイト時間を取るかだねえ、う~ん頭いたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です