2012-07-04 58 views
0

我在計算沒有任何物理引擎的軌跡類型時遇到了困難。cocos2d根據初始點和槍的角度計算出口點

我想要實現的是將大炮移動到某個點。我有大炮的初始位置,大炮和觸摸點之間的角度+我想要旅行的距離。

這裏的目標是根據起點,角度和距離來計算出口點。

方案:http://dl.dropbox.com/u/39096612/testcase.png

,這是我在移動手指(它後面,而不是在前面)如何旋轉炮:

CGPoint location = [touch locationInView:[touch view]]; 
CGFloat angle = CC_RADIANS_TO_DEGREES(ccpToAngle(ccpSub(cannon.position, location))); 
angle += 90; 

cannonRotation = angle; 

通常與這個工作,但它不會爲我工作(可能是我做錯了......),真的需要你的幫助。

ccp(x + distance * cos(a), y + distance * sin(a)) 
+0

是你的大炮雪碧?你如何將cannonRotation應用於它? – Basel

+0

是的,它是一個精靈,我正在按預定的方法進行旋轉,如 - (void)tick:(ccTime)dt; – peerless

回答

0

exitPoint = ccpAdd(cannon.position , ccp(cannon.position.x - touch.x , cannon.position.y - touch.y));

+0

謝謝你的回放,它不工作,可能是我沒有足夠好地解釋目標。 我已經制定了另一個方案來更好地說明它: http://cl.ly/043A0p1G0o2j0b0r2r0g 目標是找到dx,dy - 顯然,我在穿過大炮中心的同一條線上,但無法思考任何解決這個問題(數學不是我的東西):) – peerless

+0

明白了。我的編輯答案。 – George

+0

不工作,這裏是日誌: '大炮:{240,135} - 觸摸:{244,68} = {4,-67} | FYI角度:93.416588 cannon:{240,135} - touch:{236,224} = {-4,89} | FYI角度:-87.426643 cannon:{240,135} - touch:{362,127} = {122,-8} | FYI角度:176.248276 cannon:{240,135} - touch:{58,130} = {-182,-5} | FYI角度:1.573664' – peerless