2014-07-26 98 views
2

我有一個太空船主題的遊戲,用相機移動並使用SIN功能旋轉到1度的精度。宇宙飛船正確地移動和旋轉。我現在正在研究這艘宇宙飛船的射擊。基於另一個精靈的旋轉改變精靈的位置SDL2&C++ 11

到目前爲止,我可以創建一個鏡頭,從太空船向右轉,不管它可能面向哪個方向。但是我想知道是否有一種方法可以讓我根據飛船的位置在一個鏡頭中產卵?我可以處理它產生後的所有拍攝角度。我還不知道如何根據它的旋轉在飛船前面產卵。

我使用SDL2與C++ 11

我不希望你直接告訴我的代碼,如果可能的話,因爲我不會學到什麼東西。我將此用作學習體驗。我需要說明宇宙飛船360度旋轉週期的每個1度角的產卵位置點數?或者,他們是一個更有活力的做這種事情的方式?

回答

1

通過應用三角函數來運送旋轉,可以計算x和y偏移量。將其添加到船位,你會得到拋射物的絕對位置。例如:

bulletRotation = shipRotation; 
bulletCenterX = shipCenterX + cos(shipRotation) * offset; 
bulletCenterY = shipCenterY + sin(shipRotation) * offset; 

如果您已經實施了項目符號的物理學,您也可以重新使用該邏輯。只需讓子彈前進一點。

請確保不要混合度數和弧度。

0

設O爲太空船的中心,Ox爲以O爲原點的參考軸,A是您正在尋找的點。只要你知道它與O的距離(如果你的宇宙飛船隻旋轉就應該是恆定的)以及OA和Ox之間的角度θ,就可以很容易地確定A的座標。

相對於O,

Ax = OA * cos(theta) 
Ay = OA * sin(theta) 

得到絕對座標,只是相對那些添加到O.

的,我不知道你是怎麼計算出你的擊球軌跡的座標,但是你可以用類似的方式來做(只要O不移動,你只需要改變距離OA)。