ここから本文です

質問です! BGをスクロールさせるときは、 どうやったら当たり判定をすることが...

godeaterhayaさん

2013/10/1220:03:27

質問です!
BGをスクロールさせるときは、
どうやったら当たり判定をすることがで
できるのでしょうか。
教えてください!お願い致します!!!

閲覧数:
136
回答数:
1

違反報告

ベストアンサーに選ばれた回答

oh_********さん

2013/10/1723:24:54

■リスト
―――――――――――――――――――――――――――
ACLS

'地面描写 --------------------

BGFILL 1,35,18,40,19,778,2,0,0
BGFILL 1,45,19,46,20,778,2,0,0
BGFILL 1,20,20,30,21,778,2,0,0
BGFILL 1, 5,22,50,22,778,2,0,0
BGFILL 1, 0,23,64,23,778,2,0,0
BGPUT 1,12,22,0 '穴を開ける

'キャラ指定 ------------------

X=16*8:Y=12*8
SPSET 0,64,2,0,0,1
SPANIM 0,4,5 '歩行アニメーション設定

'キャラ視覚化 ----------------

SPSET 1,64,2,0,0,1
SPANIM 1,4,5
SPOFS 1,20*8,0
GFILL 20*8,2*8,22*8,3*8,&HA
GFILL 22*8,0*8,23*8,2*8,&HA

@LOOP

FOR SX=0 TO 511

SPOFS 0,X,Y 'スプライトを移動

BX=FLOOR(X/8)+SX/8 'スプライト座標をBG座標に変換
BY=FLOOR(Y/8)

BGREAD(1,BX ,BY+2),CHR1,PAL,H,V '足下確認
BGREAD(1,BX+1,BY+2),CHR2,PAL,H,V
BGREAD(1,BX+2,BY ),CHR3,PAL,H,V '前方確認
BGREAD(1,BX+2,BY+1),CHR4,PAL,H,V

IF CHR1+CHR2==0 THEN Y=Y+4 '足下空白なら落ちる
IF CHR3+CHR4!=0 THEN Y=Y-64:BEEP 8 '前方壁ならジャンプ

BGOFS 1,SX,0 'BG画面スクロール

'BG状態 視覚化 ---------------

CLS
LOCATE 20,2
IF CHR1==778 THEN ?"■" ELSE ?"1"
LOCATE 21,2
IF CHR2==778 THEN ?"■" ELSE ?"2"
LOCATE 22,0
IF CHR3==778 THEN ?"■" ELSE ?"3"
LOCATE 22,1
IF CHR4==778 THEN ?"■" ELSE ?"4"

'スローモーション確認 --------

B=BUTTON()
IF B!=0 THEN WAIT 10 '何かキーを押すと遅くなる

WAIT 1
NEXT

GOTO @LOOP
―――――――――――――――――――――――――――

■簡単な説明

スプライト同士の衝突は SPCOL で簡単に判定できるが、
BGにはその様な便利な命令がないので計算で求めるしかない。

基本的には足下に壁がない場合降下して
前方に壁がある場合ジャンプして
一連の確認が終わったらBGをスクロールしているだけです。

但し、スプライトとBGは座標系が違うので変換する必要があります。
スプライトは 0~255 BGは 0~31 なので丁度1/8で一対一になる
足下のBGキャラを調べるのは BGREAD で取得できます。

ここまでは前回の回答と同じです。(詳しくは参照)
http://note.chiebukuro.yahoo.co.jp/detail/n188885


今回の問題点はBGをスクロールさせた場合の壁の当たり判定です。

別に難しくは無くって BGOFS で移動した距離を加算するだけです。
たった、コ・レ・ダ・ケ です。(*^▽^*)/

今回は当たり判定を4カ所に増やしています。
これにより穴が1個の場合落ちないようになっています。
詳しくは図とプログラムをにらめっこして下さい。
このプログラムの要所はたった9行なので難しくは無いはずです。
(似た計算を箇所が4行追加したので実質5行です)
難しい処理は一切行っていません。

詳しく学びたい場合、このサンプルの少しずつ改造するのが
一番の勉強になると思います。
CHR3だけ当たると後ろに飛ばされるとか
判定箇所を増やして天井に当たった場合落ちるとか
地面に大きい穴を開けて落ちたら上から登場するとか

・・・と、言いたいが『BGのスクロール判定説明』のため
必要最低限度の処理しか行っていないので少し工夫が必要です。

知恵ノートに見易くまとめたので参照して下さい。
http://note.chiebukuro.yahoo.co.jp/detail/n221164

■リスト
―――――――――――――――――――――――――――
ACLS

'地面描写...

質問した人からのコメント

2013/10/18 19:10:29

笑う 再びありがとうございます!!!
今回もわかりやすくてとても助かりました!!!!!
本当にありがとうございました!!!!!!!!!!!!!!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる