【发布时间】:2011-03-10 02:14:32
【问题描述】:
我有 2 个精灵,球和箭。 箭头不动。 球在它的锚点上旋转。
id rotate = [CCRotateBy actionWithDuration:.5 angle: 360];
我想在球到达箭头时检测碰撞。 试过 CGRectIntersectsRect 但它没有检测到碰撞。 有什么帮助吗? 谢谢...
【问题讨论】:
标签: iphone cocos2d-iphone
我有 2 个精灵,球和箭。 箭头不动。 球在它的锚点上旋转。
id rotate = [CCRotateBy actionWithDuration:.5 angle: 360];
我想在球到达箭头时检测碰撞。 试过 CGRectIntersectsRect 但它没有检测到碰撞。 有什么帮助吗? 谢谢...
【问题讨论】:
标签: iphone cocos2d-iphone
您可能不想要这个答案,但我会使用 Box2D 或 Chipmunk 并使用 Vertex Helper 应用程序来指定顶点。
【讨论】:
使用圆-圆碰撞方法..这是方法..
-(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
}
注意尺寸 = 球半径 + 箭头半径 * 球半径 + 箭头半径
上面的方法是使用 a(square) + b(square) = c(square) 来检查两点之间的距离..
【讨论】:
您可能需要在更新方法中将球转换为世界空间,然后调用它而不是球的位置。如果它在父层中,则位置相对于其父层将始终是静态的。
【讨论】: