SPFUNC

プチコン3号(3.2.0) プチコンBIG 

スプライト番号にコールバック処理を割り当て

SPFUNC spNo,@label SPFUNC spNo,"def"

パラメーター

spNoスプライト番号(0~511)
label処理が記載された場所のラベル名
defユーザー定義の名前

解説

指定したスプライト番号に、コールバック処理を設定します。

スプライト毎に設定されたコールバックは、「CALL SPRITE」で一斉に実行されます。
コールバック処理内ではシステム変数-CALLIDXで、処理中のスプライト番号を取得可能。

SPSETされていないspNoには使用できません。

サンプルコード

らせん状の弾幕

画面中心から外側に向かって、らせん状に弾を発射します。
画面外に出た弾(スプライト)はSPCLRでスプライト番号を開放されます。
SPFUNC・CALL SPRITEを使えば、
 FOR SP=0 TO 511:IF SPUSED(SP) THEN〜
などとして毎回最大512回のループを回す必要がなく別途配列を用意する必要もありません。
この例では、SPFUNCの処理にユーザー定義命令「MYFUNC」を設定していますが、GOSUB文と同じように @XXX〜RETURN で記述しても処理可能です。
 
@LOOP
IF (CNT MOD 5)==0 THEN '弾の発射
SPSET 1479 OUT SP 'スプライト設定と番号取得
SPOFS SP,200,120
RD=RAD(CNT MOD 360) '発射角度
SPVAR SP,0,COS(RD) 'X方向の速度を保存
SPVAR SP,1,SIN(RD) 'Y方向の速度を保存
SPFUNC SP,"MYFUNC"
CALL SPRITE
GOTO @LOOP
'------------------
DEF MYFUNC
SP=CALLIDX 'スプライト番号
SPOFS SP OUT X,Y
IF X<-16||X>400||Y<-16||Y>240 THEN
  SPCLR SP '画面外に出たらスプライトを初期化
  SPOFS SP ,X+SPVAR(SP,0) ,Y+SPVAR(SP,1) '移動
 

参照

SPPAGE スプライトキャラの定義に使用するグラフィックページを指定・取得
SPCLIP スプライトキャラを表示する範囲を指定
SPDEF スプライトキャラの定義データを変更・取得
SPSET スプライト番号にキャラクターをセット
SPCLR スプライト番号のキャラ設定をクリア
SPSHOW スプライトを表示状態にする
SPHIDE スプライトを非表示状態にする
SPHOME スプライトキャラの原点座標を変更・取得
SPOFS スプライトキャラの表示座標を変更・取得
SPROT スプライトキャラの回転角度を変更・取得
SPSCALE スプライトキャラの表示倍率を変更・取得
SPCOLOR スプライトキャラの色合いを変更・取得
SPCHR スプライトキャラのキャラ種類を変更・取得
SPLINK スプライトの同士をリンク・取得
SPUNLINK スプライトの同士のリンクを解除
SPANIM スプライトにアニメーションを設定
SPSTOP スプライトのアニメーションを一時停止
SPSTART スプライトのアニメーションを再開
SPCHK スプライトのアニメーション状況を取得
SPVAR スプライト用内部変数の値を設定・取得
SPCOL スプライトの衝突判定のルールを設定・取得
SPCOLVEC スプライトの衝突判定用に移動量を設定
SPHITSP スプライト同士の衝突判定
SPHITRC スプライトと指定領域との衝突判定
SPHITINFO スプライトの最後の衝突結果を取得
SPUSED スプライト番号が使用されているかチェック
SPFUNC スプライト番号にコールバック処理を割り当て

Facebookコメント