【发布时间】:2013-12-21 12:17:41
【问题描述】:
我从 sprite-kit 框架开始,我想知道是否可以将正方形分解成三角形或其他小多边形。
我知道如何检测子弹和基本多边形之间的碰撞,但是在 Sprite-kit 中定义了任何方法来将多边形分割或分割成小的多边形?
提前致谢。
【问题讨论】:
我从 sprite-kit 框架开始,我想知道是否可以将正方形分解成三角形或其他小多边形。
我知道如何检测子弹和基本多边形之间的碰撞,但是在 Sprite-kit 中定义了任何方法来将多边形分割或分割成小的多边形?
提前致谢。
【问题讨论】:
我不相信有。我相信这就是关节的目的。您创建单个实体,然后使用固定关节将它们连接在一起。连接的实体作为一个整体,直到您决定破坏部分或全部关节。
此页面包含有关创建关节的详细信息: https://developer.apple.com/library/IOS/documentation/SpriteKit/Reference/SKPhysicsJoint_Ref/Reference/Reference.html
【讨论】:
您可能想要使用类似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];
【讨论】: