究竟有什麼在標題所說,是有沒有辦法做這樣的事情:有沒有辦法讓SKSpriteNode的旋轉平行於另一個SKSpriteNode的物理體?
有沒有辦法做到這一點?如果是這樣,我如何將SKAction rotateToAngle
對應到面向圓的一側?
謝謝!
究竟有什麼在標題所說,是有沒有辦法做這樣的事情:有沒有辦法讓SKSpriteNode的旋轉平行於另一個SKSpriteNode的物理體?
有沒有辦法做到這一點?如果是這樣,我如何將SKAction rotateToAngle
對應到面向圓的一側?
謝謝!
任何給定點處的圓的切線垂直於繪製到該點的半徑。考慮兩個節點在極座標系中,原點位於圓心。您可以在廣場的直角座標系(其中心)轉換爲極,並找到合適半徑的角度:
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)};
}
很簡單:添加矩形精靈(它不應該有一個物理身體的自己的,儘管你可以嘗試看看它是否與靜態物體一起工作)作爲子物體節點與物理體的圓形精靈。將矩形精靈的位置更改爲從其父節點的中心偏移,即{100,0},使圓節點距離中心100點。
隨着圓形精靈&正文的旋轉,矩形精靈將隨之移動並旋轉。
你的意思是「平行於」一個圓圈?平行於圓的切線?無論suqare在哪裏移動,你都希望廣場的同一側面對這個圈子? –
沒錯,我想讓火箭與切線平行。正方形也需要繞着圓周移動。 – Burrito411