2014-04-05 49 views
1

究竟有什麼在標題所說,是有沒有辦法做這樣的事情:有沒有辦法讓SKSpriteNode的旋轉平行於另一個SKSpriteNode的物理體?

SKSpriteNode parallel

有沒有辦法做到這一點?如果是這樣,我如何將SKAction rotateToAngle對應到面向圓的一側?

謝謝!

+0

你的意思是「平行於」一個圓圈?平行於圓的切線?無論suqare在哪裏移動,你都希望廣場的同一側面對這個圈子? –

+0

沒錯,我想讓火箭與切線平行。正方形也需要繞着圓周移動。 – Burrito411

回答

1

任何給定點處的圓的切線垂直於繪製到該點的半徑。考慮兩個節點在極座標系中,原點位於圓心。您可以在廣場的直角座標系(其中心)轉換爲極,並找到合適半徑的角度:

void cartopol(CGFloat x, CGFloat y, CGFloat *radius, CGFloat *theta) 
{ 
    *radius = sqrt(x*x, y*y); 
    *theta = atan2(y, x); 
} 

(如果你喜歡這可能不是返回CGPoint是使用了參數,我會做下面的補充功能;算術是重要的一點)。

theta將以弧度;加或減π/ 4將其旋轉90˚。

要移動廣場繞了一圈,選擇你需要的角度和半徑,並轉換從極地到笛卡爾:

CGPoint poltocar(CGFloat radius, CGFloat theta) 
{ 
    return (CGPoint){radius * cos(theta), radius * sin(theta)}; 
} 
0

很簡單:添加矩形精靈(它不應該有一個物理身體的自己的,儘管你可以嘗試看看它是否與靜態物體一起工作)作爲子物體節點與物理體的圓形精靈。將矩形精靈的位置更改爲從其父節點的中心偏移,即{100,0},使圓節點距離中心100點。

隨着圓形精靈&正文的旋轉,矩形精靈將隨之移動並旋轉。

相關問題