プレイ日記
Ar ka10aru
当たり判定をつくる方法をなるべく詳しく教えてください!
1そうだね
プレイ済み
返信[1]
親投稿
InDoor TheInDoor12
とりあえず、ざっくりとした方法を書きます。 1.マリオをy方向に動かす 2.マリオがブロックにめり込んでいるか確認する 3.めり込んでいたら、そのブロックにめり込まない位置に押し戻す 4.マリオをx方向に動かす 5.マリオがブロックにめり込んでいるか確認する 6.めり込んでいたら、そのブロックにめり込まない位置に押し戻す わからない所は掘り下げて説明しますんで、聞いてくださいな。
0そうだね
プレイ済み
返信[2]
親投稿
Ar ka10aru
3のめり込まない位置に押し戻すってどうやるんですか?
0そうだね
プレイ済み
返信[3]
親投稿
InDoor TheInDoor12
マリオが上からめり込んだのならブロックの上側に、 下からめり込んだのならブロックの下側に移動させます。 (3の時点ではx方向に移動させていないので、左右の衝突については考えなくていい)
0そうだね
プレイ済み
返信[4]
親投稿
Ar ka10aru
しつこくてすいません。移動するってどうやってするんですか?
0そうだね
プレイ済み
返信[5]
親投稿
InDoor TheInDoor12
>しつこくてすいません いえいえ。こちらも説明がざっくりしてますんで、遠慮なく聞きまくってください。 >移動する方法 マリオの座標を変更します。 命令で言うと、SPOFSです。
0そうだね
プレイ済み
返信[6]
親投稿
Ar ka10aru
そうですか。ありがとうございます! 早速質問です!具体的にどういう文を書けばいいですか? IF ○○○○○○みたいなかんじでお願いします!
0そうだね
プレイ済み
返信[7]
親投稿
InDoor TheInDoor12
うーむ… けっこう長くなりますし、できれば文は自分で書いて頂きたいです。 が、擬似コードを書いておきます。わからない所は聞いて下さい。 (x,y:マリオ座標 vx,vy:マリオ移動量)
0そうだね
プレイ済み
返信[8]
親投稿
InDoor TheInDoor12
//ボタン操作等でマリオを動かしたい時は、直接座標を変更せずに移動量をvx,vyに代入しておく //ここから当たり判定 y=y+vy if (下移動時) then //マリオの下端とブロックの衝突判定、衝突時に押し戻す else if (上移動時) then //マリオの上端とブロックの衝突判定、衝突時に押し戻す endif x=x+vx if (左移動時) then //マリオの左端と(以下略 else if (右移動時) then //マリオの(ry endif //ここで、SPOFS。
2そうだね
プレイ済み
返信[9]
親投稿
ツララ LongIceSword
上下左右のどの方向に移動しているかの条件式はvx、vyそれぞれ(○>0)と(○<0)みたく符号で判定してやるといいかも。 あとY成分は画面下方向がプラスなので、計算式は上下反転した感じになるのを意識してやるのが注意点ですね。
0そうだね
プレイ済み
返信[10]
親投稿
Ar ka10aru
うーん……… ちょっとよくわからないんですよ…もしよかったらこの一番上にあるやつに打ってくれませんか?よかったらでいいです。
0そうだね
プレイ済み
返信[11]
親投稿
ツララ LongIceSword
公開キー【24NEN3H4】 とりあえず上下方向のみサブルーチンで追加してみました。 当たり判定は点じゃなくて範囲で計算してやらないとキャラクターがめり込んだりするので、そこ注意ですね。 スプライトの当たり判定用のSPHITRC命令を使いやすいように変数を予め準備しておくと汎用性が高くなるかも。
0そうだね
プレイ済み
返信[12]
親投稿
Ar ka10aru
すごい…あなたは(僕から見れば)神のような存在です…
0そうだね
プレイ済み
返信[13]
親投稿
Ar ka10aru
できれば全部作ってほしかったです(
0そうだね
プレイ済み
返信[14]
親投稿
ツララ LongIceSword
InDoorさんのヒントに乗っからせてもらっただけなのでお礼はInDoorさんへ。それにちょっと追加しただけでAkkun-630さんのプログラムなので後は応用でなんとかしてね。 追加した部分はちゃんとInDoorさんの書かれていた通りの構造になってるでしょ? あとBGの当たり判定を取る時にBGキャラの情報が返って来るから、そこで下からブロックをパンチした後の処理を分岐させたりすればブロックを消したりもできるはず。 頑張ってね。
0そうだね
プレイ済み
返信[15]
親投稿
Ar ka10aru
InDoorさん、ツララさん 回答、本当にありがとうございました お二人のおかげで上と下の当たり判定ができました♪♪♪とってもうれしいです。でも、右と左はだめで、しかも下にマリオがめり込んでしまいます。ネットでも色々調べていますが改善できません。元々のプログラムに問題があるのかもしれません。どうしたらいいのか………。初めてのプログラムなので、完全させたいてす。何度も申し訳ありませんが教えてください。お願いします。
0そうだね
プレイ済み
返信[16]
親投稿
ツララ LongIceSword
公開キー【43X3V4KX】 左右方向の当たり判定も追加したバージョンです。 ネットで調べなくてもInDoorさんの書かれていた通りに、上下方向の式のYを座標の数値を意識してXに置き換えて書けば大丈夫ですよ。 操作キャラクターのサイズが16×16で左上端が原点になるので、先ず方眼紙などを使って、起点を0番目として数えるのを意識してBGGETで上下方向の当たり判定を取っている座標をマーキングしてみると分りやすいかもですね。 上下方向は重力の働きをしている変数Aの扱いがちょっとややこしいですけれど、左右方向は本当に単純に「押し戻す」処理をしてやればめり込まないはず。 元のプログラム自体も何も問題は無いと思いますよ。
0そうだね
プレイ済み
返信[17]
親投稿
Ar ka10aru
つららさん ありがとうございます 左右のあたり判定できました!!! 少しづつですがだんだん出来てきてとても、うれしいです。完成まではまだまだ時間がかかりそうですががんばっていろいろ考えてみたり調べたりして完成を目指したいと思います。 ありがとうございます。
1そうだね
プレイ済み