我尝试检测两个精灵之间的碰撞。
if(CGRectIntersectsRect([SpriteA BoundingBox], [SpriteB boundingBox]))
但是当我旋转任何精灵时,碰撞检测并不完美。我知道使用像素完美碰撞,但我不知道。请任何人帮助我了解如何检测碰撞,如果有的话,请给我任何代码块。
我尝试检测两个精灵之间的碰撞。
if(CGRectIntersectsRect([SpriteA BoundingBox], [SpriteB boundingBox]))
但是当我旋转任何精灵时,碰撞检测并不完美。我知道使用像素完美碰撞,但我不知道。请任何人帮助我了解如何检测碰撞,如果有的话,请给我任何代码块。
您可以使用 box2d 让它为您检测所有碰撞
这是可能的!尝试使用 CGPath。我有同样的问题。我已经用这个教程解决了:http: //bobueland.com/cocos2d/2011/the-magic-of-cgpaths/
旋转路径试试这个方法,它围绕边界框的中心旋转路径:
-(CGPathRef) rotateCGPath:(CGPathRef)path corner:(CGFloat)radians
{
CGRect bounds = CGPathGetBoundingBox(path);
CGPoint center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
CGAffineTransform transf = CGAffineTransformIdentity;
transf = CGAffineTransformTranslate(transf, center.x, center.y);
transf = CGAffineTransformRotate(transf, -radians);
transf = CGAffineTransformTranslate(transf, -center.x, -center.y);
return CGPathCreateCopyByTransformingPath(path, &transf);
}
在此之后,您可以通过以下方式简单地检测碰撞:
if (CGPathContainsPoint(Collisionpath, NULL, collisionPoint, NO))
{ //is inside the path }
祝你好运!
您还可以参考Ray Wenderlich 教程来检测任意 2 个 Box2D 物体之间的碰撞。