1

这是我像卫星在行星上一样围绕圆圈移动正方形的方法:

-(CGPoint)circularMovement:(float)degrees radius:(CGFloat)radius{        
        float x = (planet.position.x + planet.radius) *cos(degrees);
        float y = (planet.position.y + planet.radius) *sin(degrees);

        CGPoint posicion = CGPointMake(x, y);
        return posicion;
}

正如你所看到的,我得到了我的卫星的 x 和 y 位置,并用度 ++ 调用这个方法,我得到了围绕行星的圆周运动。

但是我对这个运动系统的问题是我需要satelite.position.x+satelite.size.width/2检测与另一个使用相同运动系统移动的物体的碰撞程度。

任何人都知道如何获得这个价值?

4

1 回答 1

1

只需进行相同的计算,但向后计算。

在您的示例中,您知道:planet.position , planet.radiusdegrees并且必须为此找到xyCGPoint

现在你知道了:planet.positionplanet.radius等等,CGPoint你需要找到度数。

从你的公式:

float x = (planet.position.x + planet.radius) *cos(degrees);

你可以找到你的学位:

cos(degrees) = x / (planet.position.x + planet.radius);

例如:

cos(x) = 1 / 2;

然后

x = acos(1/2);
x = 60 degrees or Pi/3 rads
于 2015-01-28T09:41:37.733 回答