SPHITSP

プチコン3号 プチコンBIG 

スプライト同士の衝突判定

指定キャラと衝突しているキャラを探す hitSpNo = SPHITSP(spNo[,spNoFr,spNoTo]) 2つのキャラ同士が衝突しているか調べる flg = SPHITSP(spNo1,spNo2)

パラメーター

spNo,spNo1,spNo2スプライト番号
spNoFr,spNoTo検索するspNoの範囲

戻り値

hitSpNo衝突しているスプライト番号(-1:非衝突)
flg衝突フラグ(1(TRUE):衝突, 0(FALSE):非衝突)

解説

スプライト同士の衝突判定を行います。
SPCOLで衝突の設定をしていないと衝突とみなされません。

SPHITSPには2つの使用方法があります。
スプライトを1つ指定し、それと衝突しているスプライトを探す
戻り値・・・スプライト番号、または-1:非衝突
スプライトを2つ指定し、これらが衝突しているか調べる
戻り値・・・1(TRUE):衝突, 0(FALSE):非衝突

機能も戻り値も違いますので注意してください。

スプライト番号はSPSETで設定済みである必要があります。
スプライトと指定領域との衝突はSPHITRCを使用してください。

サンプルコード

スプライト0と衝突しているスプライトを探す
SP=SPHITSP(0) '全スプライトを検索
SP=SPHITSP(0,1,10) '1~10のスプライトを検索
 
スプライト0と1が衝突しているかを調べる
IF SPHITSP(0,1) THEN ?"しょうとつ!"
衝突判定のサンプルプログラム
ACLS:X=0
SPSET 0,0:SPCOL 0 'いちご。SPCOLで衝突を有効に
SPSET 1,1:SPCOL 1:SPOFS 1,50,0 'みかん表示
 
WHILE 1  '永久ループ
B=BUTTON()
IF B==#LEFT THEN X=X-1 '十字キー左移動
IF B==#RIGHT THEN X=X+1 '十字キー右移動
SPOFS 0,X,0 'いちご移動
IF SPHITSP(0,1) THEN BEEP '衝突したら音を鳴らす
VSYNC '同期待ち
 

参照

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コメント