2011-06-03 16 views
0

所以我用Planet.c演示設置爲我的2D iPhone遊戲的速度功能是在參與軌道行星的作品。然而,以下代碼設置好的軌道,但僅在屏幕的原點,即屏幕的左下角這樣做:花栗鼠2D設定Oribital速度函數

// Point mass position 
cpVect p = body->p; 

cpFloat sqdist = cpvlengthsq(p); 
cpVect g = cpvmult(p, -gravityStrength/(sqdist * cpfsqrt(sqdist))); 

cpBodyUpdateVelocity(body, g, damping, dt); 

我試着簡單地把中央恆星的位置的位移矢量(以這種情況下,屏幕CPV(160,240)的中心),但是,僅僅在一個陌生的軌道發送它關閉。我一直在嘗試了各種試圖獲得相對於中心我的身體的位置矢量和徑向矢量,而不是到原點,但我不能得到它的工作完全正確。我在想:

// Sun position 
cpVect disp = cpv(160, 240); 

// Point mass position 
cpVect p = body->p; 

// Point mass relative to Sun 
p = cpvsub(disp, p); 

cpFloat sqdist = cpvlengthsq(p); 
cpVect g = cpvmult(p, -gravityStrength/(sqdist * cpfsqrt(sqdist))); 

cpBodyUpdateVelocity(body, g, damping, dt); 

任何想法?謝謝!

回答

0

明白了!正如我懷疑的只是獲得正確的矢量減法的問題,即中心減去位置矢量。做得好!