我一直在研究一個遊戲,並且遇到了彈跳效果的一些問題。我在互聯網上搜索了不同的資源,但還沒有找到正確的方法。計算回彈球上的角度
我想知道是否有某種方法可以計算球撞牆後彈回的度數或角度。
Exampel,球是在一個特定的角度移動,我想知道如何計算的角度,當我彈
bollX += bollspeed*Math.cos(Math.toRadians(angle));
bollY += bollspeed*Math.sin(Math.toRadians(angel));
感謝您的幫助。
我一直在研究一個遊戲,並且遇到了彈跳效果的一些問題。我在互聯網上搜索了不同的資源,但還沒有找到正確的方法。計算回彈球上的角度
我想知道是否有某種方法可以計算球撞牆後彈回的度數或角度。
Exampel,球是在一個特定的角度移動,我想知道如何計算的角度,當我彈
bollX += bollspeed*Math.cos(Math.toRadians(angle));
bollY += bollspeed*Math.sin(Math.toRadians(angel));
感謝您的幫助。
這個問題比你做得更簡單。你根本不需要擔心角度,只是從組件角度考慮角度。當球在垂直方向擊中某物時,其速度的x分量被翻轉。當球在水平面上碰到某物時,其速度的y分量被翻轉。
例如,僞碼,你的衝突處理可能是這個樣子:
if (hits on left or right side of brick)
ball.velocity.x = -ball.velocity.x;
else if (hits on top or bottom side of brick)
ball.velocity.y = -ball.velocity.y;
endif
從你提供的代碼,我不能確切地告訴你,如果有某種速度分量是這樣的。爲了表示你的速度,你必須有一個角度和一個大小,或者一個x和y分量。如果您在設計遊戲時選擇了前者,我強烈建議切換到組件,因爲它會使得所有的數學計算變得更加容易,因爲您最終只會將所有內容都轉換爲組件。
請注意,這個答案假定你只是完全水平或垂直彈跳。
你應該知道單位法線向量「n」,它垂直向量與球接觸並反彈回來的邊緣線和(n· n) = 1。
如果說單位法線矢量Ñ和你的速度矢量v然後 您的新的速度矢量將是, v 新 = v - 2 (V· N)N,其中粗體字符表示向量,「·」表示點積。
下面鏈路是該計算中,其可以提供更好的見解 http://mathworld.wolfram.com/images/eps-gif/Reflection2_751.gif
角度=角度出 – Nanne 2012-03-27 13:19:23
如果壁是所有垂直或水平的視覺表示,你可以只逆轉在x或y的速度,這取決於你打在哪個牆上。 – Derek 2012-03-27 13:35:09
它們都是垂直和水平的。我試圖找出的計算是,如果球移動315度進行檢測並在水平(90度)壁上反彈,則它應該反彈回275度。 – 2012-03-27 13:54:49