まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
昨日使った当り判定スプリクトの当り判定の部分は
if (abs(px-ex(cnt))<16)&(abs(py-ey(cnt))<16)なのですが、このスプリクトだと同じ大きさのキャラクタの場合は
問題ないのですが、大きさの違う物同士の場合にこのスプリクトを使うと当り判定が真中にこなくて、おかしな事になってしまいます。
ちなみにabsと言う命令は絶対値を求める為に使用してます。(絶対値を求めないと当り判定に使えないので)
でどうするかと言うと、例えば

こんな感じの当り判定を行うとして
自機が32×32、弾が8×8だとすると、まずお互いのキャラクターのx軸とy軸の真中の座標から差を求めます。
その求めた差と一定数で当り判定をすれば、自分の好きな所に判定を持ってくる事が出来るようになるんです。
弾をetx,ety、自機をpx,py、中心座標の差をddx,ddyとすると
ddx=(etx(cnt)+4)-(px+16)
ddy=(ety(cnt)+4)-(py+16)
if (abs(ddx)<10)&(abs(ddy)<10)
こんな感じのスプリクトで、大きさの違う物同士でも真中に当り判定を持ってくる事が出来ますね^^
if (abs(px-ex(cnt))<16)&(abs(py-ey(cnt))<16)なのですが、このスプリクトだと同じ大きさのキャラクタの場合は
問題ないのですが、大きさの違う物同士の場合にこのスプリクトを使うと当り判定が真中にこなくて、おかしな事になってしまいます。
ちなみにabsと言う命令は絶対値を求める為に使用してます。(絶対値を求めないと当り判定に使えないので)
でどうするかと言うと、例えば
こんな感じの当り判定を行うとして
自機が32×32、弾が8×8だとすると、まずお互いのキャラクターのx軸とy軸の真中の座標から差を求めます。
その求めた差と一定数で当り判定をすれば、自分の好きな所に判定を持ってくる事が出来るようになるんです。
弾をetx,ety、自機をpx,py、中心座標の差をddx,ddyとすると
ddx=(etx(cnt)+4)-(px+16)
ddy=(ety(cnt)+4)-(py+16)
if (abs(ddx)<10)&(abs(ddy)<10)
こんな感じのスプリクトで、大きさの違う物同士でも真中に当り判定を持ってくる事が出来ますね^^
PR
この記事にコメントする
カレンダー
03 | 2025/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事