2016-10-30 2 views
4

ボールを特定の高さ(y)にする必要がある場所を予測したいと思っています。ボールは上向きに発射され、ゲームの両面から跳ね返ることができます。バウンスは移動速度に影響しません。壁からはね返ることができるボールの将来の位置を計算する

私の現在の設定は、左下が(0,0)、右下が(10,0)で、上限の上限はありません。

コード:私のコードは、これまで正確であると私は壁バウンスを処理するために何をすべきかどう

void getPositionXAtHeight(float height, Vec2 pos, Vec2 vel, float gravityForce = 9.8f, float gameWidth, float& positionX) 
{ 
    float a = gravityForce/2.0f; 
    float b = vel.y; 
    float c = pos.y - height; 

    float t = (sqrtf((b * b) - (4.0f * a * c)) - b)/(2.0f * a); 

    positionX = pos.x + (vel.x*t); 
} 

Idea

誰が助言することはできますか? また、何らかのエラーチェックを行う必要があると感じていますが、私はどこを必要としているのか分かりません。

+0

どのようにgravityForceを使用しますか? – Treycos

+0

gravityForceは常に9.8f – user2990037

+0

あなたはアルゴリズムの実装を説明できますか? – mdavid

答えて

1

重力の方向は明確ではありませんが、y軸に沿っているとします。対称性については、x値が10以上になると、x値を「ラップアラウンド」することができます。 x = 9(10 - (11 - 10))の方程式では、対称性のためにx = 11になります。 同様に、「ダブルバウンス」なども扱えます。

関連する問題