前回に引き続きアニメーションなどをやっていきます。
アニメーション
星を動かしてみましょう。
制限としては、スクリーンサイズは横をあらわすX軸が400、縦をあらわすY軸が240です。
遠近をあらわすZ軸は「-256~1024」が利用できます。マイナスほど手前となります。
スプライトは初期設定で512個までとなります。
スプライト
まず星っぽい絵を探して表示させます。
実行するとこんな感じ。
SPOFSをループで行う
SPANIMでは星のような表現はちょっと面倒なのでループでSPOFSさせる方向で処理してみましょう。
ちょうどいいサンプルがありましたので、改良するやり方にします。
SmileBASIC 講座_2.計算で遊ぶ – SmileBasic
まずは1つの星が流れ、下までいったら上からまた再度落ち始めるようにします。
最初に初期化し、次にループさせます。
ACLS
SPSET 0, 1329
X=RND(400)
Y=RND(240)
Z=2+RND[5]
@L
Y=Y+Z
IF Y>239 then Y=0
SPOFS 0,X,Y
NEXT
WAIT 1
GOTO @L
これだと動いてもインパクトないです。やはり星は数をたくさんだしたいところ。
そこで、配列を使ってたくさん表示してみましょう。
ACLS
DIM X[30],Y[30],Z[30]
FOR I=0 TO 29
SPSET I, 1329
X[I]=RND(400)
Y[I]=RND(240)
Z[I]=2+RND[5]
NEXT
@L
FOR I=0 TO 29
Y[I]=Y[I]+Z[I]
IF Y[I]>239 then Y[I]=0
SPOFS I,X[I],Y[I]
NEXT
WAIT 1
GOTO @L
これで流れる星を表現することができました。
アニメーションコマンド
SmileBASICにはアニメーション用コマンドもあるので使ってみます。
SPANIM 管理番号,"アニメ対象",時間,項目1[,項目2]
となっています。
そこで、
ACLS
SPSET 0,1329
SPANIM 0,"XY",1,10,0,-120,10,260,0
とします。
管理番号0に1329の絵を割り当て、SPANIMでは管理番号0のデータで指定したXY座標を移動するタイプのアニメであることを指定。
続けて 開始点の時間とXY座標、 次の場所の時間とXY座標を指定。
ループさせるので最後に0を指定します。
これで座標を指定したアニメーションができました。