こんにちは3Dの当たり判定で円柱と球の当たり判定をやりたいのですが、なかなかうまくいきません。
どういう条件で当たっているか判定できますか?
球と円柱の当たり判定
-
- 記事: 48
- 登録日時: 7年前
Re: 球と円柱の当たり判定
球と球の当たり判定を応用して座標毎に行うのはどうでしょうか?
円柱は下底が円なのでそれに高さで伸ばしてみるのと
球はそのまま球の当たり判定へ組み込めるので
球と円柱のあらゆる座標との当たり判定でどうでしょうか?
自分はそれを応用してレイトレーシングでソフトウェアレンダリングしたことがあります。
確か球と球の当たり判定は球Aと球Bと半径RA,RBとすると
(AX-BX)^2+(AY-BY)^2+(AZ-BZ)^2<(RA+RB)^2
だと思います。
円柱は下底が円なのでそれに高さで伸ばしてみるのと
球はそのまま球の当たり判定へ組み込めるので
球と円柱のあらゆる座標との当たり判定でどうでしょうか?
自分はそれを応用してレイトレーシングでソフトウェアレンダリングしたことがあります。
確か球と球の当たり判定は球Aと球Bと半径RA,RBとすると
(AX-BX)^2+(AY-BY)^2+(AZ-BZ)^2<(RA+RB)^2
だと思います。
-
- 記事: 48
- 登録日時: 7年前
Re: 球と円柱の当たり判定
DXLIB依存なら球とモデルの当たり判定という関数があります。
https://dxlib.xsrv.jp/function/dxfunc_3 ... .html#R9N5
https://dxlib.xsrv.jp/function/dxfunc_3 ... .html#R9N5
-
- 記事: 6
- 登録日時: 2年前
Re: 球と円柱の当たり判定
皆さん回答ありがとうございます!
実は私当たり判定がすごく苦手なのでいままで逃げてきたんですよね...
なので球と球しかわからないです...
littlestreamさん
申し訳ないですけどちょっと仰っていることがわからないです。すみません...
DXライブラリは使っていなくて、DirectX11を使っています。
usaoさん
なんかよさそうなんですけどどういう風に計算できるものなのでしょうか?
実は私当たり判定がすごく苦手なのでいままで逃げてきたんですよね...
なので球と球しかわからないです...
littlestreamさん
申し訳ないですけどちょっと仰っていることがわからないです。すみません...
DXライブラリは使っていなくて、DirectX11を使っています。
usaoさん
なんかよさそうなんですけどどういう風に計算できるものなのでしょうか?
Re: 球と円柱の当たり判定
usaoさんの言うように、円と長方形の当たり判定に帰着させる方法が良さそうですね。
まず、
点と直線と平面と交点と距離
に載っている方法で、球の中心点から円柱の中心軸に垂線を下ろした時の交点を求めます。
すると、この交点を原点、円柱の中心軸をx軸、交点と球の中心点を通る直線をy軸 (軸の向きは適当に)
とした平面を考えることができ、
その平面における球の中心点、および円柱の2個の底面と中心軸の交点の座標 (≒距離) がわかるはずです。
あとは、これらの座標と、球や円柱の半径を用いて、当たり判定をする円と長方形の座標が求まります。 円と長方形の当たり判定は、たとえばここで。
よしいずの雑記帳 円と長方形との当たり判定
まず、
点と直線と平面と交点と距離
に載っている方法で、球の中心点から円柱の中心軸に垂線を下ろした時の交点を求めます。
すると、この交点を原点、円柱の中心軸をx軸、交点と球の中心点を通る直線をy軸 (軸の向きは適当に)
とした平面を考えることができ、
その平面における球の中心点、および円柱の2個の底面と中心軸の交点の座標 (≒距離) がわかるはずです。
あとは、これらの座標と、球や円柱の半径を用いて、当たり判定をする円と長方形の座標が求まります。 円と長方形の当たり判定は、たとえばここで。
よしいずの雑記帳 円と長方形との当たり判定
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
- 記事: 6
- 登録日時: 2年前
Re: 球と円柱の当たり判定
みけCATさんありがとうございます。
私がやりたいのは円柱の丸い面の上で球のコリジョンを持ったキャラクターが戦う
というものなんですけどその判定がいるのですけどどうしましょう?
私がやりたいのは円柱の丸い面の上で球のコリジョンを持ったキャラクターが戦う
というものなんですけどその判定がいるのですけどどうしましょう?
Re: 球と円柱の当たり判定
> どうしましょう?
って何だ?
「実装すればよくね?」以外に何かある?
みけCAT氏の図のaの値が円柱半径以内のときは判定方法は自明,みたいな処理を先にやる形にすれば
「面を成さない」パターンはそっちに含まれるから変な面倒も起きないだろう.
って何だ?
「実装すればよくね?」以外に何かある?
みけCAT氏の図のaの値が円柱半径以内のときは判定方法は自明,みたいな処理を先にやる形にすれば
「面を成さない」パターンはそっちに含まれるから変な面倒も起きないだろう.
Re: 球と円柱の当たり判定
どう実装するかを考えて実装すればいいと思います。
・円柱は何個あるのか?
・円柱は動くのか?
・「戦う」とは具体的にどのような動作か?
・キャラクターの可能な動きは? (たとえばジャンプはできる?)
などによって、具体的な適切な実装は違ってきそうだと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 球と円柱の当たり判定
通りすがりですが
usaoくんはなんでマトモな回答もしてないのにタメ口でしかも揚げ足をとるような口調なんでしょうか?
昔ながら(苦笑)の閉鎖的、排他的なエンジニア感があって見てられずコメントしてしまいました。
usaoくんはなんでマトモな回答もしてないのにタメ口でしかも揚げ足をとるような口調なんでしょうか?
昔ながら(苦笑)の閉鎖的、排他的なエンジニア感があって見てられずコメントしてしまいました。