2016-04-17 48 views
0

私は学校でプロジェクトを進めようとしていますが、弾丸が敵のオブジェクトに完全に当たるように本当に苦労しています。これまでのところ、時折、敵のランダムな場所で衝突することがありますが、それは時間の問題でしかありません。DirectXで弾丸を敵と衝突させる

これは私がこれまで持っているものです。

 for (int i = 0; i < 200; i++){ // 200 is number of bullets I use 
      for (int k = 0; k < game.enemiesVec.size(); k++){ 
      if ((((bullets[i].pos.x + 0.15f) >(game.enemiesVec[k].x))) && ((bullets[k].pos.x - 0.15f) < (game.enemiesVec[k].x)) && 
       (((bullets[i].pos.y) < (game.enemiesVec[k].y -0.15f)) && ((bullets[k].pos.y) > (game.enemiesVec[k].y +0.15f)))){ 
    //do stuff    
    game.enemiesVec[k].x = 5; 
      } 
      } 
    } 

私は、私はそれはと衝突するより大きな面積を有しているので、何とか多分オブジェクトの半径を取得する必要がありますが、私は」知っている、TBH無知です何も考えていない!

誰かが助けてくれることを願っています。

答えて

0

敵のサイズを大きくすると、状況によっては問題が解決する可能性がありますが、問題を完全に防ぐことはできません。あなたの弾丸はおそらくすべてのフレームに移動し、その位置から「ジャンプ」します。今度は、各フレームの敵に対する現在の位置をテストしていますが、この方法ではフレーム間の動きは無視されます。だから、弾丸が1つのフレームで動くことができる最大距離よりも大きいサイズに半径を増やすと、状況を避けることができますが、これは太った敵につながり、境界矩形の小さな角。実際の解決策の1つは、境界線ではなく、単一の点を基準に線をテストすることです。行は移動の開始から終わりまで続く。この線が矩形と衝突すると、弾丸はその敵の敵に当たる。あなたは、エントリを計算する可能性があるため、あなたはまた、敵の体内でのランダム交点を取り除くでしょう、行矩形交差テストで

PointIntersectionProblem

:私は状況を示すために、少し画像を描画しましたポイント。

+0

これは後悔して大変申し訳ありませんでした。返信ありがとう:) –

関連する問題