トピック
受付中
ななし basuku13

質問

スプライトとスプライトが衝突したときに、重ならないようにするにはどうすればいいですか。
0そうだね
プレイ済み
返信[1]
親投稿
あんど AND1GOUKI
そのまま、「炎と重ならないように止まる」プログラムにすれば良いだけです。が、「衝突」した時に・・・って事は既に重なってますよね? 衝突判定はしたいけど、重ねたくはない。。。さて、どうしましょうか? この辺りを考えるのがプログラムの楽しい所でもあります。 いろいろ方法はあると思いますし、作りたい物のルールによっては採用不可な方法もあるでしょう。 グラフィックが炎と重ならないだけであれば、SPCOLでグラフィックより幅を広く判定範囲を設定して、見かけ上、炎とぶつかっていない様にする方法もあるでしょう。 反対にスライム側の判定範囲を広げる方法も考えられますね。 他には、スライムの前に衝突判定用の専用スプライトを透明色で配置する方法もとれそうですね。 作りたい物によっては、SPHITSPを使わない方法も考えられますよね? あの手この手でイロイロ試行錯誤してみると面白いかもしれません。
4そうだね
プレイ済み
返信[2]
親投稿
BlackSoft BlackSoft.mkII3g
ぱっと浮かんだのは、スライムに透明スプライトをリンクさせておいて、透明スプライトとスライムとで、 ・衝突判定 ・接近判定 みたいに使い分ける感じですかね。 当たり判定枠はこんなイメージです。 ┏━━━━━┓ ┃┌───┐┃ ┃│   │┃ ┃└───┘┃ ┗━━━━━┛ 内側:衝突判定枠 外側:接近判定枠
2そうだね
プレイ済み
返信[3]
親投稿
ななし basuku13
ありがとうございました。早速参考にしたいと思います。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
これって例えば「キャラがジャンプしたときに地面にめり込まないようにする」など多くのゲームで必要になるテクニックです。 具体的なプログラムはあえて書きませんが、方法としては下記の2つのものが多く使われていると思います。 (1)重なる前に止める (2)重なった後で座標を補正する (1)は当たり判定を見た目より大きくしたり計算によって衝突時の座標を求めたりして上手く重ならないようにすれば良いです。 (2)は重なった後で重なり具合を見てその分だけ位置をずらせばOKです。これだと一瞬重なったように見えるのではないかと思うかもしれないですが画面表示は1秒間に約60回(1フレームごと)にしか行わないため表示更新前に座標を動かせば問題ありません。 これらは一例にすぎず方法はたくさんあります。「これは正しくあれは間違っている」ということはなく自分が思ったように動けばどれもが正解です。
3そうだね
プレイ済み
返信[5]
親投稿
ななし basuku13
解決できました。ありがとうございました。
0そうだね
プレイ済み