2014-03-28 21 views
0

我正在看一個應該幫助計算拋射體運動軌跡的公式。我在看答案是在以下網址:Flash的座標系中的拋射體運動

Calculating Trajectory for Projectile Motion

公式實際上似乎工作 - 除了它是基於屏幕座標系統原點的想法計算y軸位置在左下角。在Flash中,座標系位於的左上角一角,而y位置越高,則進一步從下降到!這意味着,不是拱起來,然後再次退縮,彈丸落下,然後起來!

我需要找到一些方法來翻譯我的y值,這樣彈丸可以看起來像是在一個適當的拋物線上下。有沒有人有任何想法如何做到這一點?

有人請指教...

+0

將你的最終y值乘以-1來翻轉它 – mitim

+0

這不行。我想到了這一點並嘗試過。一個爲什麼不起作用的例子:假設你的初始Y位置是65,你的Y速度是1(爲簡單起見)。在「常規」弧線中,在第一個時鐘中,新的位置將是66.您獲得的逆轉-66 - 完全破壞您嘗試創建的拋物弧線。隨着時間的推移,螺絲繼續。否:通過將最終Y乘以-1來「翻轉」不會產生正確的運動。 –

回答

1

在你的鏈接展望(對不起,應該已經看過這首先要看你使用來計算你的運動 - 我是假設你用別的什麼方法),如果你想讓它去「上升」而不是「向下」你可以翻轉標誌上的代碼在事件處理程序的第二行:中

代替:

cannonball.y = inity + Math.sin(angle) * initVelocity * Time - G * Time * Time * 0.5; 

你可以去(加括號):

cannonball.y = inity - (Math.sin(angle) * initVelocity * Time - G * Time * Time * 0.5); 

推理是通過計算拋射體應該在哪裏的相對位置,然後將它添加到最初的Y來獲得最終位置。因爲y + = 1會將對象向下移動,所以添加會使它向下移動。既然去相反的y - = 1會使它上升到舞臺上,你可以減去而不是增加。

+0

謝謝!這個解決方案非常明顯 - 難怪我沒有看到它! :-) –