将多边形分成小块或三角形

时间:2013-12-21 12:17:41

标签: game-physics sprite-kit

我从sprite-kit框架开始,我想知道是否可以将一个正方形分成三角形或其他小多边形。

我知道如何检测子弹和基本多边形之间的碰撞,但是在Sprite-kit中定义了将多边形划分或拆分成小多边形的任何方法?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我不相信有。我相信这是关节的目的。您可以创建单个实体,然后将它们与固定关节连接在一起。连接的身体作为一体,直到你决定打破一些或所有的关节。

此页面包含有关创建关节的详细信息: https://developer.apple.com/library/IOS/documentation/SpriteKit/Reference/SKPhysicsJoint_Ref/Reference/Reference.html

答案 1 :(得分:1)

您可能想要使用this工具之类的东西。 它允许您使用自定义形状定义physicsBody,例如:

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"img"];

CGFloat offsetX = sprite.size.width * self.anchorPoint.x;
CGFloat offsetY = sprite.size.height * self.anchorPoint.y;

CGMutablePathRef path = CGPathCreateMutable();

CGPathMoveToPoint(path, NULL, 24 - offsetX, 124 - offsetY);
CGPathAddLineToPoint(path, NULL, 24 - offsetX, 47 - offsetY);
CGPathAddLineToPoint(path, NULL, 339 - offsetX, 1 - offsetY);
CGPathAddLineToPoint(path, NULL, 401 - offsetX, 3 - offsetY);
CGPathAddLineToPoint(path, NULL, 452 - offsetX, 52 - offsetY);
CGPathAddLineToPoint(path, NULL, 411 - offsetX, 78 - offsetY);
CGPathAddLineToPoint(path, NULL, 295 - offsetX, 78 - offsetY);
CGPathAddLineToPoint(path, NULL, 268 - offsetX, 93 - offsetY);
CGPathAddLineToPoint(path, NULL, 95 - offsetX, 78 - offsetY);
CGPathAddLineToPoint(path, NULL, 62 - offsetX, 124 - offsetY);

CGPathCloseSubpath(path);

sprite.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];