重複の可能性:
浮動小数点比較
うーん、これは奇妙なものです。通常、以下if( 4.0 == 4.0 ){return true}
は常に を返しtrue
ます。私が持っている単純な小さなopengl 3d「シューター」プログラムでは、「ジャンプ」効果を追加しようとすると、そうではありません。
アイデアはかなり単純です。三角形のストリップの地形があります。「キャラクター」が移動/歩行すると、高さの2次元配列に沿って移動するため、丘/谷のさまざまな高さを上下に歩きます。
関数の外側drawScene()
(または、opengl を知っている場合glutDisplayFunc()
) にupdate()
は、キャラクターが「ジャンプ」するときにキャラクターを上下させる関数があります。これは で呼び出されdrawScene()
ます。つまり、私が説明できる限りの高レベルのジャンプ アルゴリズムは次のとおりです。
パラメーター:
double currentJumpingHeight
double maximumJumpingHeight = 4.0
double ypos;
const double jumpingIncrement = 0.1; //THE PROBLEM!!!! HAS TO BE A MULTIPLE OF 0.5!!
bool isJumping = false;
bool ascending = true;
アルゴリズム:
(when space is pressed) isJumping = true.
if ascending = true and isJumping = true,
currentJumpHeight += jumpingIncrement (and the same for ypos)
if currentJumpingHeight == maximumJumpingHeight, //THE PROBLEM
ascending = false
(we decrement currentJumpingHeight and start to fall until we hit the ground.)
非常に単純ですが、 jumpingIncrement が0.5
!!の倍数の場合にのみ機能します。
jumpingIncrement
が、たとえば の場合0.1
、とcurrentJumpingHeight
等しくなることはありませんmaximumJumpingHeight
。キャラクターはロケットのように離陸し、地上に戻ることはありません。2 つの変数が標準出力に出力され、それらが同じであっても、条件が真になることはありません。これは私が解決したい問題です、それはばかげています。
ジャンピング アルゴリズムに関するフィードバックは必要ありません。上記の段落のみをお願いします。
助けてください。