参考サイトを参考に当たり判定を提示コードのうに実装しましたが。上手行きません。提示画像で黒い丸は固定です。赤い丸が移動しているブロックです(プレイヤーのようなもの)Sが最初にいる場所ですが。Nの場所に移動していると黒い丸を超えてもずっと衝突判定が起こってしまうのですがどうすればいいのでしょうか?Sの地点では当たり判定は起こっていません。
参考サイト: http://marupeke296.com/COL_3D_No5_SphereToSphere.html
cpp
1/アップデート 2 3//アップデート 4void Game::Update() 5{ 6 7 glm::vec3 p1 = mMesh->at(0).getPosition(); 8 glm::vec3 p2 = mMesh->at(1).getPosition(); 9 10 float p1_r = 1; //半径 11 float p2_r = 1; //半径 12 13 float a = (sqrt(p2.x - p1.x)) + (sqrt(p2.y - p1.y)) + (sqrt(p2.z - p1.z)); 14 float b = (sqrt(p1.x - p2.x)) + (sqrt(p1.y - p2.y)) + (sqrt(p1.z - p2.z)); 15 16 if (a <= (sqrt(p1_r + p2_r))) 17 { 18 printf("当たり\n"); 19 } 20 else 21 { 22 printf("no hit \n"); 23 } 24 25 26 27 28 29 for (int i = 0; i < mMesh->size(); i++) 30 { 31 mMesh->at(i).Update(); 32 } 33 KeyInput(); //キー入力 34}
.objのローダーは完成したのですね。
いえ、完成しておりません。が取り得ず時間の無駄なので放置して別ののことに手をつけ始めました。
オブジェクト2つ出てるけど、これでも完成じゃないの
これは自分で頂点座標を手入力した頂点座標です。
ああ、なるほど。なんでも出せるよう、引き続き頑張ってください。
球と球の当たり判定と書いていて、描画しているものは四角形のように見えるのは何故ですか?
> Nの場所に移動していると黒い丸を超えてもずっと衝突判定が起こってしまうのですがどうすればいいのでしょうか?
デバッグしましょう
stdio 氏 立方体ですが取り得ず球体で当たり判定をしています。
何故 参考先の数式をそのまま実装しないのか? 本当に理解に苦しむ.
そうでなくとも
> sqrt(p2.x - p1.x)
とかいう式を考えた時点で不安を覚えたりとかしないのでしょうか?
{算数,数学}が必要な処理を考えるなら,まずはコードを書くよりも前に,必要な{算数,数学}の側をきちんと理解すべきです.
(数式を見て演算手順が意味がわからないならば,その内容をコード化できるわけがない)
あっpowでした。関数でした。
まぁ、ここまで理解していないのなら学校にでも入学した方が良いですよ...
その程度で躓いているようでは、先が思いやられます...
回答1件
あなたの回答
tips
プレビュー