2018年 1月31日
エフェクト表示の物理攻撃と魔法の半分(火、水、風)が出来たので報告。
いやあ、意外と手間だよ、コレ。
エフェクト表示は初めてという事もあるけど、やはり2ヶ月も費やす事になりそうだし、グラのデータ容量も結構大きいし、プログラムも意外とややこしいし、絶対必要という訳でも無いし、初心者はやらない方が良いと思った。
少なくとも最初の RUN(プログラム実効)時にグラの読み込みで遅くなるので、一通りゲームが完成してから最後に付けた方が良いと思う。
それじゃあ今回はブログ初の試みで動画で。
今回投稿が遅れたのはこの動画のせいもあって、録画とブログに埋め込む方法を模索していたからというのもある。
ではまず物理アタックから
武器名の表示がワンテンポずれてるが、現在これは確認用なので。
次は素アタック
うわっ!ゆっくり実況音声が混ざってるよ(笑)
自分でビックリッしたけど気にしないで下さい。
動画は引っかきと噛み付きだけだけど、まあそんな感じ。
最後に魔法の一部を
う~ん、プログラムの都合上こっちは名前表示がずれてないみたいだけど、まあ大体こんな感じ。
それじゃあソースがどんな事になってるか公開。
今回エフェクトは始めてなので、要領が悪くソースはベタベタのグチャグチャになってる。
まず表示関係から
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 |
; エフェクト表示 efb=20 ; 最大数 efd=12 ; データ数 dim ef,efd*efb ; データ ;(0=種類、1=グラNo.2=表示場所、3=アニメc、4=速さc、5=速さ、 ; 6=x、7=y、8=x動き、9=y動き、10=透明 or 加算、11=移動時間) ddim eff,4*efb ; 実数データ ; (0=反転x、1=反転y、2=回転、3=回転速度) #deffunc efsx ; 座標x if efsn2<=3 : ef(efg+6)=bcx1(efsn2)+40 ; x if efsn2>=4 : ef(efg+6)=bcx2(efsn2-3)+40 ; x return #deffunc efsm int efsmf ; 向き repeat 1 if efsmf=1 : eff(efg2+0)=1.0 : eff(efg2+1)=1.0 : break ; 正 if efsmf=2 : eff(efg2+0)=-1.0 : eff(efg2+1)=1.0 : break ; 左右反転 if efsmf=3 : eff(efg2+0)=1.0 : eff(efg2+1)=-1.0 : break ; 上下反転 if efsmf=4 : eff(efg2+0)=-1.0 : eff(efg2+1)=-1.0 : break ; 全反転 loop if efsn2<=3 : eff(efg2+0)*=-1.0 ; 左の隊の場合の反転 return #deffunc efs int efsf,int efsn1,int efsn3,int efsd,int efsa,int efse ; int efsx,int efsy,int dfsr,int dfsrn ; エフェクトセット(フラグ、グラ、速さ、反転、移動時間、透明か加算か); 動きx、動きy、回転、回転速度) if efsf=0 : return f=0 repeat efb ; No,ピック if ef(efd*cnt)=0 : efg=efd*cnt : efg2=4*cnt : f=1 : break loop if f=0 : return ; 空きが無い ef(efg)=efsf ; 表示種類 ef(efg+1)=efsn1 ; グラNo. ef(efg+2)=efsn2 ; 表示場所 ef(efg+3)=0 ; アニメカウント ef(efg+4)=0 ; アニメ速さカウント ef(efg+5)=efsn3 ; アニメ速さ ef(efg+6)=0 ; x ef(efg+7)=btly1+65 ; y ef(efg+8)=0 ; 動きx ef(efg+9)=0 ; 動きy ef(efg+10)=efse ; 表示種類(0=通常、1=加算) ef(efg+11)=efsa ; 移動時間 repeat 4 eff(efg2+cnt)=0.0 ; リセット loop switch efsf ; 表示種類 case 1 ; 敵固定 if fs=1 : efsn2=et+3 : else : efsn2=et ; 場所x efsx ; x efsm efsd ; 向き swbreak case 2 ; 投射 if fs=1 : efsn2=ut : else : efsn2=ut+3 ; 場所x if itn=289 : if fs=1 : efsn2=4 : else : efsn2=1 efsx ; x n=ut+et-1 : ef(efg+8)=(btlxk*n+btlck)/efsa : if fs=2 : ef(efg+8)*=-1 ; 距離とスピード if itn=289 : ef(efg+8)=(btlxk*2)/efsa : if fs=2 : ef(efg+8)*=-1 efsm efsd ; 向き if id(ig+19)=7 : nf1=-1.0 : nf2=1.0 : else : nf1=1.0 : nf2=-1.0 ; 弓 ; if fs=1 : eff(efg2+0)=nf1 : else : eff(efg2+0)=nf2 ; 向きx ;eff(efg2+1)=1.0 ; 向きxy swbreak case 3 ; 自分固定 if fs=1 : efsn2=ut : else : efsn2=ut+3 ; 場所x efsx ; x efsm efsd ; 向き swbreak case 4 ; 全体 et=2 : if fs=1 : efsn2=et+3 : else : efsn2=et ; 場所x efsx ; x efsm efsd ; 向き swbreak swend ; 回転 if efsn1=5 : if efsn2<=3 : eff(efg2+2)=0.6 : else : eff(efg2+2)=-0.6 ; 曲刀 if efsn1=7 : if efsn2<=3 : eff(efg2+2)=-0.3 : else : eff(efg2+2)=0.3 ; 刺突剣 if efsn1=11 : if efsn2<=3 : eff(efg2+2)=-0.9 : else : eff(efg2+2)=0.9 ; 大剣 if efsn1=13 : if efsn2<=3 : eff(efg2+2)=0.6 : else : eff(efg2+2)=-0.6 ; 槌 if efsn1=19 : if efsn2<=3 : eff(efg2+2)=1.6 : else : eff(efg2+2)=-1.6 ; 大砲 if efsn1=20 : if efsn2<=3 : eff(efg2+2)=1.6 : else : eff(efg2+2)=-1.6 ; フャイヤー if efsn1=24 : if efsn2<=3 : eff(efg2+2)=0.6 : else : eff(efg2+2)=-0.6 ; フレイムアロー if efsn1=30 : if efsn2<=3 : eff(efg2+2)=-1.9 : else : eff(efg2+2)=1.9 ; アイスニードル if efsn1=31 : if efsn2<=3 : eff(efg2+2)=1.6 : else : eff(efg2+2)=-1.6 ; ウォーターストリーム if efsn1=32 : eff(efg2+0)=0.8 : eff(efg2+1)=0.8 ; ピュリファイ if efsn1=33 : eff(efg2+0)=0.8 : eff(efg2+1)=0.8 ; アイスエンチャント if efsn1=34 { ; アイスジャベリン eff(efg2+0)=0.2 : eff(efg2+1)=1.8 ef(efg+3)=10 : ef(efg+11)=30 if efsn2<=3 : eff(efg2+2)=-1.6 : else : eff(efg2+2)=1.6 } if efsn1=35 : eff(efg2+2)=-1.7 : eff(efg2+2)=1.7 ; アイスピラー if efsn1=38 { ; メイルシュトローム eff(efg2+0)=2.5 : eff(efg2+1)=1.0 ef(efg+7)+=24 } if itn=270 { ; ブリザード n1=ef(efg+6)-btlxk : n2=ef(efg+6)+btlxk ; x eff(efg2+0)=0.8 : eff(efg2+1)=0.8 repeat 2 : cnt2=cnt ; 左右のブリザード repeat efb ; No,ピック efg=efd*cnt : efg2=4*cnt : if ef(efg)>0 : continue ef(efg)=efsf ; 表示種類 ef(efg+1)=efsn1 ; グラNo. ef(efg+3)=0 ; アニメカウント ef(efg+4)=0 ; アニメ速さカウント ef(efg+5)=efsn3 ; アニメ速さ if cnt2=0 : ef(efg+6)=n1 ; x if cnt2=1 : ef(efg+6)=n2 ; x ef(efg+7)=btly1+65 ; y ef(efg+8)=0 ; 動きx ef(efg+9)=0 ; 動きy ef(efg+10)=efse ; 表示種類(0=通常、1=加算) ef(efg+11)=efsa ; 移動時間 repeat 4 eff(efg2+cnt)=0.0 ; リセット loop efsm efsd ; 向き eff(efg2+0)=0.8 : eff(efg2+1)=0.8 break loop loop } if efsn1=40 : eff(efg2+0)=1.0 : eff(efg2+1)=0.3 ; ウインドカッター if efsn1=41 : eff(efg2+0)=0.7 : eff(efg2+1)=0.7 ; ウインドムーブ if efsn1=42 : eff(efg2+0)=0.6 : eff(efg2+1)=0.6 ; サンダー if efsn1=43 : eff(efg2+0)=0.8 : eff(efg2+1)=0.8 ; ウィンドエンチャント if efsn1=44 : eff(efg2+0)=0.8 : eff(efg2+1)=1.8 ; サンダーウエポン if efsn1=47 { ; ライトニングボルト eff(efg2+0)=0.5 : eff(efg2+1)=3.0 if efsn2<=3 : eff(efg2+2)=1.6 : else : eff(efg2+2)=-1.6 } if efsn1=48 { eff(efg2+0)=1.4 : eff(efg2+1)=1.4 ; ウィンドストーム} if fs=1 : ef(efg+6)-=40 : else : ef(efg+6)+=40 ; x } return #deffunc efp ; エフェクトプット repeat efb efg=efd*cnt : efg2=4*cnt ; データの先頭 if ef(efg)=0 : continue ; 無い ef(efg+4)+ : if ef(efg+4)>=ef(efg+5) : ef(efg+3)+ : ef(efg+4)=0 : ; アニメウエイト処理 if ef(efg+10)=0 : gmode 3,,,255 : else : gmode 5,,,255 ; 透明、加算 pos ef(efg+6),ef(efg+7) celput efw(ef(efg+1)),ef(efg+3),eff(efg2+0),eff(efg2+1),eff(efg2+2) if ef(efg+3)>=efga(ef(efg+1)) : ef(efg)=0 : break ; アニメ if ef(efg+3)<=ef(efg+11) : ef(efg+6)+=ef(efg+8) ; 動きx ef(efg+7)+=ef(efg+9) ; 動きy eff(efg2+2)+=eff(efg2+3) ; 回転 loop return #deffunc bts1 ; 素アタック if us=6 or us=11 or us=13 or us=33 or us=36 or us=46 or us=51 or us=72 or us=74 or us=97 or us=111 or us=167 or us=181 or us=185 or us=205 : efs 1,3,2,1 : return ; 牙 if us=71 or us=92 or us=96 or us=118 or us=132 or us=184 : efs 1,2,2,2 : return ; 爪 if us=7 or us=16 or us=52 or us=135 or us=168 : efs 1,4,2,2 : return ; 尾 if us=1 or us=8 or us=12 or us=32 or us=35 or us=43 or us=50 or us=73 or us=94 or us=95 or us=112 or us=120 or us=151 or us=152 or us=153 or us=169 or us=183 or us=190 or us=192 : efs 1,9,2,1 : return ; 体当たり efs 1,1,2,1 ; 素手 return #deffunc bts2 ; 近接武器アタック if itn=10 or itn=11 or itn=16 or itn=24 : efs 1,5,1,1 : return ; 曲刀 if itn=12 or itn=15 or itn=23 : efs 1,7,2,2 : return ; 刺突剣 if id(ig+19)=1 : efs 1,15,2,2 : return ; 剣 if id(ig+19)=2 : efs 1,11,2,1 : return ; 大剣 if id(ig+19)=3 : efs 1, 8,2,1 : return ; 槍 if id(ig+19)=4 : efs 1,12,2,2 : return ; 斧 if id(ig+19)=5 : efs 1,13,2,2 : return ; 槌 if id(ig+19)=6 : efs 1,14,2,4 : return ; 杖 return #deffunc bts3 ; 投射武器アタック if id(ig+19)=7 : efs 2,16,1,1,8 : return ; 弓 if id(ig+19)=8 : efs 2,18,1,2,9 : return ; ボウ if itn=90 : efs 2,19,2,1,11 : return ; 大砲 if id(ig+19)=9 : efs 1,17,1,1,0 : return ; 銃 return #deffunc bts4 ; 魔法 if itn=251 : efs 2,20,2,3,17,1 : return ; ファイヤー if itn=252 : efs 3,21,1,1,0 ,1 : return ; ファイヤーウェポン if itn=253 : efs 3,22,2,1,0 ,1 : return ; バーサーク if itn=254 : efs 1,23,2,1,0 ,1 : return ; ファイヤーピレイム if itn=255 : efs 2,24,1,1,15,1 : return ; フレイムアロー if itn=256 : efs 3,25,1,1,0 ,1 : return ; バトルソング if itn=257 : efs 2,26,1,1,7 ,1 : return ; ファイアーボール if itn=258 : efs 4,28,3,1,0 ,1 : return ; ファイヤーウォール if itn=259 : efs 4,29,3,1,0 ,1 : return ; エクスプロージョン if itn=261 : efs 2,30,1,3,18,1 : return ; アイスニードル if itn=262 : efs 2,31,2,3,15,1 : return ; ウォーターストリーム if itn=263 : efs 3,32,1,1,0 ,1 : return ; ピュリファイ if itn=264 : efs 3,33,1,1,0 ,1 : return ; アイスエンチャント if itn=265 : efs 2,34,1,1,18,1 : return ; アイスジャベリン if itn=266 : efs 1,35,3,4,0 ,0 : return ; アイスピラー if itn=267 : efs 3,36,2,1,0 ,1 : return ; ウォータースクリーン if itn=268 : efs 4,37,3,1,0 ,1 : return ; 津波 if itn=269 : efs 4,38,3,1,0 ,1 : return ; メイルシュトローム if itn=270 : efs 4,39,2,1,0 ,1 : return ; ブリザード if itn=281 : efs 2,40,1,1,8 ,1 : return ; ウインドカッター if itn=282 : efs 3,41,2,1,0 ,1 : return ; ウインドムーブ if itn=283 : efs 1,42,1,1,0 ,0 : return ; サンダー if itn=284 : efs 3,43,1,1,0 ,0 : return ; ウィンドエンチャント if itn=285 : efs 3,44,1,1,0 ,1 : return ; サンダーウエポン if itn=286 : efs 4,45,2,1,0 ,0 : return ; セイレーンボイス if itn=287 : efs 3,46,2,1,0 ,1 : return ; ウィンドウォール if itn=288 : efs 4,47,2,1,0 ,1 : return ; ライトニングボルト if itn=289 : efs 2,48,3,1,20,1 : return ; ウィンドストーム return #deffunc bts5 ; その他のエフェクト if itn=257 : efs 1,27,1,1,0 ,1 : return ; ファイアーボールの爆発 return |
まあ、なんとも要領の悪いプログラムになってるね。
慣れたらアイテムデータの方に表示種類とか表示方法のデータを埋め込んだ方が良いんだろうけど。
efsという命令でセット、efpという命令で 1フレーム表示になってる。
戦闘プログラムからの呼び出しはワンクッション置いて、bts1~bts4から efsを呼び出す事にした。
種類が多かったので。
次に戦闘プログラムの方はどうなってるかと言うと。
bts1~bts4と言うのがエフェクトを設定するコマンドで、bw 10というのは 10フレーム待つという事。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
#deffunc bw int bwn ; バトルウエイト repeat bwn redraw 0 color 0,0,0 : boxf : color 255,255,255 btl_put efp dmp_put bp bpn dg_put redraw 1 await 1000/20 loop return #deffunc atk int atkf,int atkn,int atkrg ; 攻撃(フラグ(0=素手、1=武器、2=魅惑)、攻撃値、射程) ------- atkn2=atkn : atkf2=atkf ; 攻撃処理用フラグ switch atkf case 0 ; 素手 if us=129 or us=94 : swbreak ; 物理アタックしない rang atkrg : if rangf=0 : swbreak ; 射程外 bts1 : atk_syo : bw 20 ; 表示、攻撃処理 swbreak case 1 ; 武器 if id(ig+19)=7 or id(ig+19)=8 or id(ig+19)=9 or id(ig+19)=10 { ; 弓、ボウガン、銃、手裏剣 if ud(ug+8)=24 : brang atkrg : if rangf>0 : bts3 : atk_syo : bw 20 : swbreak ; スナイピング if ud(ug+8)=25 : rang atkrg+1 : if rangf>0 : bts3 : atk_syo : bw 20 : swbreak ; 強弓 if ud(ug+8)=26 { ; 貫通 repeat 3,1 : et=cnt if atkrg<(ut-1)+et : break ; 射程外 en=ffn(et) : if en=0 : continue ; 隊列にいない eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0 bts3 : atk_syo : bw 20 : gsr-=25 ; 攻撃処理 loop swbreak } rang atkrg : if rangf=0 : swbreak ; 射程外 bts3 : atk_syo : bw 20 ; 投射武器、表示、攻撃処理 } rang atkrg : if rangf=0 : swbreak bts2 : atk_syo : bw 20 ; 近接武器、表示、攻撃処理 swbreak case 2 ; 魅惑 bts1 : atk_syo : bw 20 ; 攻撃処理 swbreak swend return #deffunc matk_syo ; 魔法攻撃処理 zk1=zk_syo(ud(ug+7)) ; 種族属性補整 zk2=zk2_syo(mzk2,matkn2) ; アイテム属性補整 dmg 2,ud(ug+22) return #deffunc matk int matkf,int mzk,int matkn,int matkrg ; 魔法攻撃(フラグ、属性、攻撃値、射程) ------- mzk2=mzk : matkn2=matkn switch matkf case 0 ; 手前の一体 -------------- rang matkrg : if rangf=0 : swbreak ; 射程判定 bts4 : matk_syo : bw 20 swbreak case 1 ; 後列の一体 -------------- brang matkrg : if rangf=0 : swbreak ; 射程判定 bts4 : matk_syo : bw 20 swbreak case 2 ; 貫通 -------------- n1=ut+2 : if n1>matkrg : n2=matkrg : else : n2=n1 ; 距離 rang n2 : if rangf=0 : swbreak ; 射程判定 et=n2-ut+1 ; 最後尾 bts4 : matk_efg=efg : bwc=0 ; エフェクト表示 repeat 3,1 : et=cnt repeat ; 移動ウエイト bwc+ : bw 1 : if bwc>20 : break if itn=268 or itn=288 : break ; 津波 if fs=1 : if ef(matk_efg+6)>=btlx2+btlxk*(et-1)+0 : break ; 対象の座標xに来た if fs=2 : if ef(matk_efg+6)<=btlx1+btlxk*(3-ut)+0 : break loop if matkrg<(ut-1)+et : break ; 射程外 en=ffn(et) : if en=0 : continue ; 隊列にいない eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0 matk_syo gsr-=25 ; 威力減衰 loop repeat ; 残りのエフェクトウエイト if bwc>20 : break bwc+ : bw 1 loop swbreak case 3 ; 全列 -------------- rang matkrg : if rangf=0 : swbreak ; 射程判定 et=2 : bts4 : et=2 ; エフェクト表示 repeat matkrg-ut+1,1 if cnt=4 : break et=cnt : en=ffn(et) : if en=0 : continue ; 隊列にいない eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0 matk_syo loop bw 20 ; 表示ウエイト swbreak case 4 ; 着弾範囲型 -------------- f=0 repeat 3,1 ; 3体いるか if ffn(cnt)=0 or ud(ffn(cnt)*udb+26)<=0 : f=1 : break loop if matkrg<(ut-1)+2 : f=1 ; 真ん中に射程が届くか if f=0 { ; 3体の場合 et=2 : bts4 : bw 10 ; 弾道エフェクト gsr=100 ; 中央 et=2 : en=ffn(et) : bts5 : eg=en*udb : matk_syo gsr=75 ; 左右 et=1 : en=ffn(et) : bts5 : eg=en*udb : matk_syo et=3 : en=ffn(et) : bts5 : eg=en*udb : matk_syo bw 10 ; 爆発ウエイト swbreak } rang matkrg : if rangf=0 : swbreak ; 射程内に敵がいなかった bts4 : bw 10 ; 弾道エフェクト bts5 : matk_syo ; 1体目 et+ : if et>3 : swbreak ; 範囲外 en=ffn(et) : if en=0 : swbreak ; 2体目にいない eg=en*udb : if ud(eg+26)<=0 : swbreak ; HPが0 gsr=75 : bts5 : matk_syo ; 2体目 swbreak case 5 ; 押し出し rang matkrg : if rangf=0 : swbreak ; 射程判定 bts4 : matk_syo : bw 15 if et=3 : swbreak ; 最後列 if fs=1 : if fn2(fs2+et+1)=0 or ud(fn2(fs2+et+1)*udb+26)<=0 : fn2(fs2+et+1)=fn2(fs2+et) : fn2(fs2+et)=0 ; 押し出し if fs=2 : if fn1(fs1+et+1)=0 or ud(fn1(fs1+et+1)*udb+26)<=0 : fn1(fs1+et+1)=fn1(fs2+et) : fn1(fs1+et)=0 ; 押し出し ffn(et+1)=ffn(et) : ffn(et)=0 bw 5 swbreak case 6 ; 引き寄せ rang matkrg : if rangf=0 : swbreak ; 射程判定 if et=1 : swbreak ; 最前列 if fs=1 : if fn2(fs2+et-1)=0 or ud(fn2(fs2+et-1)*udb+26)<=0 : fn2(fs2+et-1)=fn2(fs2+et) : fn2(fs2+et)=0 if fs=2 : if fn1(fs1+et-1)=0 or ud(fn1(fs1+et-1)*udb+26)<=0 : fn1(fs1+et-1)=fn1(fs1+et) : fn1(fs1+et)=0 ffn(et-1)=ffn(et) : ffn(et)=0 swbreak case 7 ; ランダム1体 if fs=1 : n=2 : else : n=1 en=rdp(n) : if en=0 : swbreak ; unNo.決定 repeat 3,1 if fs=1 : if fn2(fs2+cnt)=en : et=cnt : break if fs=2 : if fn1(fs1+cnt)=en : et=cnt : break loop eg=en*udb : bts4 : matk_syo : bw 20 swbreak swend return |
着弾範囲型のファイアーボールとか、貫通攻撃なんかのエフェクトとダメージのタイミングをプログラムするのが手間です。
最後に画像を読み込むソースを一部だけ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
*effect_syoki efwb=10 ; エフェクト画像数 dim efw,efwb ; 画像No, dim efgx,efwb ; 大きさx dim efgy,efwb ; 大きさy dim efga,efwb ; アニメ数 fi2="effect/" ; ファイル名 n2=effectw ; 画像No, n1=1 : efw(n1)=n2 : n2+ efgx(n1)=120 : efgy(n1)=120 : efga(n1)=9 celload fi+fi2+"pipo-btleffect002.png",efw(n1) ; 素手1 celdiv efw(n1),efgx(n1),efgy(n1),efgx(n1)/2,efgy(n1)/2 n1=2 : efw(n1)=n2 : n2+ efgx(n1)=120 : efgy(n1)=120 : efga(n1)=8 celload fi+fi2+"pipo-btleffect121.png",efw(n1) ; 牙2 celdiv efw(n1),efgx(n1),efgy(n1),efgx(n1)/2,efgy(n1)/2 n1=3 : efw(n1)=n2 : n2+ efgx(n1)=120 : efgy(n1)=120 : efga(n1)=8 celload fi+fi2+"pipo-btleffect122.png",efw(n1) ; 爪3 celdiv efw(n1),efgx(n1),efgy(n1),efgx(n1)/2,efgy(n1)/2 return |
こんな感じだけど、今半分で 50個くらい読み込んでる。
このデータ量はモンスターカードやアイテム画像なんかより遥かに多い。
動画なので。
と、まあそんな感じでプログラムといい、グラを用意する手間といい、データ量といい、エフェクト表示は思ったより簡単でない事が分かりました。
では、次回はエフェクトの後半を作っていきます。
初めまして。HSPでのアプリの作り方を調べていたらこのサイトを見つけました。
無理をしない様に気を付けながら頑張ってください。応援してます。
おおっ!
なんと初コメをもらいました、ありがとうございます。
なにしろ初めての事なので発見が遅れました済みません。
お気遣いと応援ありがとうございます m(_ _)m