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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0731
蹴鞠角度についての質問2解決


蹴鞠

リンク

2013/7/31(Wed) 21:08:58|NO.56002

現在ローグライクゲームの視野の部分を作っていて、初歩的な部分かとは思うのですが質問です。

現在キャラクターを中心として円形に視野を取ることまではできました。
次にキャラクターの向き(上下左右)に応じてこれを扇状にしたいのですが、
(視野マップを作っている途中に、角度A〜角度Bに収まらなければ視野外としたい)
右向き時に角度が359→0となるので単純に範囲をとれません。

ある角度が角度a以上で角度b以下

の判定をどうとればいいのでしょうか?
上手く説明できてるか怪しいですが、お知恵を拝借お願いします。



この記事に返信する


暇人

リンク

2013/7/31(Wed) 22:16:28|NO.56011

色々方法はあるだろうけど
扇範囲の半分を足して360で割って余りを使う

扇範囲90なら角度350だった場合45を足すと395になり
360で割った余りは35になる
これを扇範囲と比較すれば良い

マウスカーソルが扇範囲にあるか調べるサンプル

向き=0 扇範囲=90 中心X=320 中心Y=240 line 中心X,中心Y,cos(deg2rad(向き))*400+中心X,sin(deg2rad(向き))*400.0+240 color 255 line 中心X,中心Y,cos(deg2rad(向き-扇範囲/2))*400+中心X,sin(deg2rad(向き-扇範囲/2))*400.0+中心Y line 中心X,中心Y,cos(deg2rad(向き+扇範囲/2))*400+中心X,sin(deg2rad(向き+扇範囲/2))*400.0+中心Y repeat await 16 角度=rad2deg(atan(mousey-中心Y,mousex-中心X)) //rad2deg(atan())は-180〜180を返すので720を足して変数向きを引いても必ずプラスになるようにしてから余りを出す title "角度="+角度+" 扇範囲内なら1="+(((角度-向き+扇範囲/2+720)\360)<扇範囲)loop

変数 向き に角度を入れれば他の方向をチェックできる



蹴鞠

リンク

2013/7/31(Wed) 22:34:34|NO.56012

おお! 正に知りたかった事そのまま書いていただいています!
試しに自作の方に入れてみても全く問題なく使えました。
一度足してから〜 までは何となく考えてはいましたが、このような解法があったんですね〜。

素早いお返事でとても助かりました、ありがとうございます!



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