SPHITINFO

プチコン3号 プチコンBIG 

スプライトの最後の衝突結果を取得

SPHITINFO OUT time[,x1,y1,x2,y2] SPHITINFO OUT time,x1,y1,mx1,my1,x2,y2,mx2,my2

戻り値

time衝突場所(0~1の間の数値)
x1,y1衝突物1の衝突時のX,Y座標
mx1,my1衝突物1に設定されていた移動量
x2,y2衝突物2の衝突時のX,Y座標
mx2,my2衝突物2に設定されていた移動量

解説

最後に「衝突」と判断された衝突判定(SPHITSPSPHITRC)の詳細を取得します。

timeは、元の場所を0、移動先を1とした、0~1のどこで衝突したかを返します。
移動量はSPCOLVECで設定するか、SPANIMの"XY"でも自動設定されます。
移動量が設定されていなければ0を返します。

サンプルコード

左のりんごと右のみかんが一瞬ですれ違うので本来なら衝突と判断されないが、内部的に移動の軌跡をたどる事で「衝突」と判定している。
この例では、衝突と判定されたらそれをプレイヤーに見せる為に、現在の座標を衝突時の座標に書き換えている。
X1=0:Y1=0:X2=100:Y2=0
SPSET 0,0:SPCOL 0:SPOFS 0,X1,Y1 '左にりんご
SPSET 1,1:SPCOL 1:SPOFS 1,X2,Y2 '右にみかん
 
X1=X1+100:SPCOLVEC 0,100,0  'りんごが右に100動く
X2=X2-100:SPCOLVEC 1,-100,0 'みかんが左に100動く
 
IF SPHITSP(0,1) THEN '衝突判定
SPHITINFO OUT TM,X1,Y1,X2,Y2 '衝突した場所を調べる
 
'衝突した場所に座標を移動
SPOFS 0,X1,Y1 'りんご
SPOFS 1,X2,Y2 'みかん
 
※スプライト全体が衝突判定範囲になっているので実際には2~3ドットほどすき間が空いています。こうならない為にはSPCOLで衝突範囲を小さくすると良い。

参照

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