1

就像它在标题中所说的那样,有没有办法做这种事情:

SKSpriteNode 并行

有没有办法做到这一点?如果是这样,我将如何将其对应于SKAction rotateToAngle面向圆圈的一侧?

谢谢!

4

2 回答 2

1

圆在任何给定点的切线都垂直于绘制到该点的半径。将两个节点视为位于极坐标系中,原点位于圆心。您可以将正方形的笛卡尔坐标(在其中心)转换为极坐标并找到适当半径的角度:

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

(如果您更喜欢使用 out 参数,这可以返回 a CGPoint,正如我将在下面为互补函数所做的那样;算术是重点。)

theta将以弧度表示;添加或减去 π/4 以将其旋转 90°。

要围绕圆移动正方形,请选择所需的角度和半径,然后将极坐标转换为笛卡尔坐标:

CGPoint poltocar(CGFloat radius, CGFloat theta)
{
    return (CGPoint){radius * cos(theta), radius * sin(theta)};
}
于 2014-04-06T01:13:18.923 回答
0

非常简单:将矩形精灵(它不应该有自己的物理体,尽管您可以尝试查看它是否适用于静态体)作为子节点添加到具有物理体的圆形精灵。将矩形精灵的位置更改为偏离其父节点的中心,即 {100, 0} 以使圆形节点远离中心 100 点。

当圆形精灵和身体旋转时,矩形精灵将随之移动和旋转。

于 2014-04-07T15:45:40.163 回答