トピック
受付中
むー 3253master

家具や壁の当たり判定

家具や壁(外壁ではなく部屋を区切ってるやつ)の当たり判定を作りたく、ネットで調べてみたのですが正直よくわからなかったので、教えていただけるとありがたいです。
1そうだね
プレイ済み
返信[1]
親投稿
スー thanks_0u0
基本的には外壁も家具なども同じで、 ・移動する前に、今から移動したいマスのチップをBGGETで取得 ・もし通れるチップなら移動、通れないチップなら向きを変えるだけ って感じです!(・u・) 応用で、BGの別レイヤーや配列、GRP領域などに当たり判定だけ書き込んでそれを調べる、っていう方法もあって、それはIFをチップ番号で細かく分けなくても良いメリットがあります。
3そうだね
プレイ済み
返信[2]
親投稿
りきすけ rikisuke
bganimなどで16ドットづつ画面を動かす場合、今現在進もうとする場所のbggetを取得して判断。ちなみに自分の作ってるアクションゲームでは、BG番号〇〇番以下は行けないBGというルールを作って判断させています。 例) blk=60 ブロックに指定してるBG番号 mvdx=0:mvdy=-1 移動方向 jdbg=bgget(0,x+8+mvdx*16,y+8+mvdy*16,1) 移動場所のbgget取得 if jdbg<blk then @cant_go 移動判定
1そうだね
プレイ済み
返信[3]
親投稿
りきすけ rikisuke
上のコードだと60番にブロックのBG入ってるとすり抜けてしまいますね。 if jdbg<blk+1 then 〜 が正しいです。。
0そうだね
プレイ済み
返信[4]
親投稿
りきすけ rikisuke
部屋を区切ってるやつでしたね〜〜(^_^;)
0そうだね
プレイ済み
返信[5]
親投稿
移動しようとしてる場所が通れるか通れないか判定して、通れないなら移動できない、のつくりが基本ですが、 どの家具や壁が通れるか通れないかを決めるのはマップやシステムを作る人まかせなので、通れるか通れないかの情報をどこかに持つ必要があります。 マップを作るときに通れる通れないの情報を決めておく必要があるけど、これが人それぞれいろんなやり方があって、どれも間違いではないのです。 どれが通れるか通れないかを配列で全部持つのは結構大変なので、 スーさんのとおり、レイヤー0は通れる、レイヤー1は通れないマップを作っておいて、レイヤー1でBGGETしたときになにかあれば通れない判定が楽かもです。 マップに使うGRPのうち下半分(チップ512番以降)は通れないとか判定もあったりするけどRPGにはちょっと向かないかも。 (アクションゲームだとダメージ判定用とかはしご用とか判定をもっと細かくしたりとか)
2そうだね
プレイ済み