就像它在标题中所说的那样,有没有办法做这种事情:
有没有办法做到这一点?如果是这样,我将如何将其对应于SKAction rotateToAngle
面向圆圈的一侧?
谢谢!
就像它在标题中所说的那样,有没有办法做这种事情:
有没有办法做到这一点?如果是这样,我将如何将其对应于SKAction rotateToAngle
面向圆圈的一侧?
谢谢!
圆在任何给定点的切线都垂直于绘制到该点的半径。将两个节点视为位于极坐标系中,原点位于圆心。您可以将正方形的笛卡尔坐标(在其中心)转换为极坐标并找到适当半径的角度:
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)};
}
非常简单:将矩形精灵(它不应该有自己的物理体,尽管您可以尝试查看它是否适用于静态体)作为子节点添加到具有物理体的圆形精灵。将矩形精灵的位置更改为偏离其父节点的中心,即 {100, 0} 以使圆形节点远离中心 100 点。
当圆形精灵和身体旋转时,矩形精灵将随之移动和旋转。