cocos2d旋转精灵碰撞检测

时间:2011-03-10 02:14:33

标签: iphone cocos2d-iphone

我有2个精灵,球和箭。 箭头没有移动。 球在它的锚点上旋转。

id rotate = [CCRotateBy actionWithDuration:.5 angle: 360];

我想在球到达箭头时检测到碰撞。 尝试过CGRectIntersectsRect,但它没有检测到冲突。 有帮助吗? 感谢...

3 个答案:

答案 0 :(得分:1)

您可能不想要这个答案,但我会使用Box2D或Chipmunk并使用Vertex Helper应用程序来指定顶点。

答案 1 :(得分:0)

使用圆圈碰撞方法..这里是方法..

-(float)asbs:(CGPoint)_arrowPos ballPos:(CGPoint)_ballPos
{
    float x = _arrowPos.x-_ballPos.x;
    float y = _arrowPos.y-_ballPos.y;
    float xy = x*x+y*y;

return xy;
}

if([self asbs:arrow.position ballPos:ball.position]<=size)
{
//collision
}

请注意尺寸=球半径+箭头半径*球半径+箭头半径

上面的方法是使用(方形)+ b(方形)= c(方形)来检查两点之间的距离..

答案 2 :(得分:0)

您可能需要在更新方法中将球转换为世界空间然后调用它而不是球的位置。如果它位于父层中,则位置将始终相对于其父级是静态的。