HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0314
Tom2点間の距離を求める方法5解決


Tom

リンク

2015/3/14(Sat) 16:31:25|NO.67851

#module
#defcfunc kyori
a1 = a1@ ;a点のX座標
a2 = a2@ ;a点のY座標
b1 = b1@ ;b点のX座標
b2 = b2@ ;b点のY座標
yo = absf(a1-b1) ;横の長さの絶対値
ta = absf(a2-b2) ;縦の長さの絶対値
return sqrt(((yo)*(yo))+((ta)*(ta))) ;ピタゴラスの定理を使う
#global

a1=100:a2=100 ;点aの座標 a1:点aのx座標 a2:点aのy座標
b1=200:b2=150 ;点bの座標 b1:点aのx座標 b2:点aのy座標

;メッセージ
mes "("+a1+","+a2+")と("+b1+","+b2+")の距離は"+kyori ()+"です。"


HSPで弾幕ゲームを作っているのですが当り判定をする時に成功することと失敗することがあります。
もしかしたらここで定義した関数が間違っているかもしれないので間違っているところがあったら教えてください!



この記事に返信する


科学太郎

リンク

2015/3/14(Sat) 18:04:21|NO.67854

> HSPで弾幕ゲームを作っているのですが当り判定をする時に成功することと失敗することがあります。
どんな感じでしょうね。
考えられる点として、ピタゴラスの定理ですから円形と円形のあたり判定になります。
つまり、矩形と矩形の隅部分は重なり合ってないと判定します。
だから長方形と長方形では隅部分で判定に失敗すると思います。

> もしかしたらここで定義した関数が間違っているかもしれないので間違っているところがあったら教えてください!
上記の理由ならばピタゴラスの定理を使わずに矩形と矩形のあたり判定に変える必要があります。

> return sqrt(((yo)*(yo))+((ta)*(ta))) ;ピタゴラスの定理を使う
あとマクロ関数ではないので (yo) は yo だけで良いです。

return sqrt((yo*yo)+(ta*ta)) ;ピタゴラスの定理を使う

・あたり判定
http://www.interq.or.jp/moonstone/person/del/atari.htm

ここを参考に。



科学太郎

リンク

2015/3/14(Sat) 18:05:55|NO.67855

・当たり判定 - ゲームプログラミングWiki
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?%C5%F6%A4%BF%A4%EA%C8%BD%C4%EA

こちらもどうぞ。



暇人

リンク

2015/3/14(Sat) 19:07:07|NO.67859

移動量が判定範囲を超えてるだけとか?

後、関数にするなら・・・

#define ctype kyori(%1,%2,%3,%4) sqrt(((%1)-(%3))*((%1)-(%3))+((%2)-(%4))*((%2)-(%4))) #define ctype hitc(%1,%2,%3,%4,%5) ((((%1)-(%3))*((%1)-(%3))+((%2)-(%4))*((%2)-(%4)))<=(%5)) a1=320:a2=240 ;点aの座標 a1:点aのx座標 a2:点aのy座標 //サイズ20とサイズ10の判定範囲計算 hsize=(20+10)/2 hsize*hsize repeat redraw 0 gradf 0,0,640,480,1,$4488,$2244 color 255,255,255 circle a1-10,a2-10,a1+10,a2+10,1 //サイズ20 b1=mousex b2=mousey color 255 circle b1-5,b2-5,b1+5,b2+5,0 //サイズ10 pos 0,0 color 255,255,255 mes "("+a1+","+a2+")と("+b1+","+b2+")の距離は"+kyori(a1,a2,b1,b2)+"です。" if hitc(a1,a2,b1,b2,hsize) = 1 {mes "当り"} redraw 1 await 15 loop



Tom

リンク

2015/3/14(Sat) 19:34:09|NO.67860

解決しました。
移動速度が速くて判定範囲を超えていたのが原因だったようです。
ありがとうございます。



Tom

リンク

2015/3/14(Sat) 19:34:46|NO.67861

 



ONION software Copyright 1997-2023(c) All rights reserved.