这是我在方块上围绕圆圈移动方块的方法:
-(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
度来检测与另一个运动相同的运动系统碰撞的碰撞。
有人知道如何获得这个值吗?
答案 0 :(得分:1)
做同样的计算,但是倒退。
在您的示例中,您知道: planet.position , planet.radius ,度,您必须找到 x 那个CGPoint
的em>和 y 。
现在你知道了: planet.position , planet.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