在Swift

时间:2015-09-12 12:18:50

标签: ios iphone swift sprite-kit

我正在为Xcode / Swift开发适用于iPad / iPhone的游戏。

我需要做的是获取图像/轮廓的轮廓路径,以便我可以沿着图像/轮廓的轮廓设置动画。这就是为了创造一种激光切割效果,当你用激光切割机突破门/窗时,你会在电影中看到这种效果。

将它绘制为Beizer路径是行不通的,因为我需要为一堆图像/轮廓执行此操作。如果可能的话,我宁愿只是将图像添加到我的项目中并在代码中进行概述,这样我就可以轻松扩展更多的形状和大小。

在SpriteKit中,我尝试使用SKPhysicsBody,然后使用Alpha创建轮廓。这给了我那个轮廓但不是一条路径,所以我不能沿着这条线动画。 实际上当启用“.showsPhysics”时,我得到了我需要的线,但仍然不是我可以用于动画的线。

有没有办法可以使用/修改“.showsPhysics”方法或将PhysicsBody转换为路径?

我在Swift中编码,任何建议都会受到赞赏。

这是我需要的一个例子,我需要蓝线作为动画的路径。

enter image description here

1 个答案:

答案 0 :(得分:0)

SpriteKit有一种从纹理内容创建物理实体的方法。请阅读bodyWithTexture:size:以获取更多信息,尤其是讨论会话。您应该考虑性能和准确性之间的平衡。

如下图所示,这是一个使用bodyWithTexture:size:

的简单示例
let texture = SKTexture(imageNamed: "rex")
let rex = SKSpriteNode(imageNamed: "rex")
rex.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
rex.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
rex.physicsBody?.dynamic = false    // This line is just for demo
self.addChild(rex)

图片:

enter image description here

<强>结果:

enter image description here