设计和导入复杂、定制的SKPhysicsBodys以用于SpriteKit。SKImport附带一个出色的编辑器和用于在您的应用程序中使用的加载类。[SKPhysicsBody bodyWithBodies]
创建复杂的、多个子体物理体。
打开编辑器并导入您的精灵图像。设计您精灵的身体并导出它。
使用“文件 > 将文件添加到“项目名称””或在项目导航器底部的加号符号将导出的精灵JSON文件添加到Xcode。
导航到您的项目目录并使用Cocoapods安装SKImport。
$ cd /to/your/project
$ touch Podfile
$ open -e Podfile
在Podfile中添加SKImport作为依赖项
platform :ios, '7.0'
pod 'SKImport'
并安装
$ pod install
在您的类头文件(.h
)中导入SKImport
。
#import <SKPhysicsBody+SKPhysicsBodyImport.h>
加载您的精灵并将其设置为精灵的physicsBody
。
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Sprite.png"];
// Find your body file
NSString *bodyFile = [[NSBundle mainBundle] pathForResource: @"sprite" ofType: @"json"];
// Add your physics body
sprite.physicsBody = [SKPhysicsBody bodyWithFile: bodyFile];
完了!恭喜。您现在正在使用SpriteKit的复杂物理体。一定要查看下面的SpriteKit的怪癖以及如何使用编辑器。
设计精灵就像导入您的图像并绘制它的轮廓一样简单。SKImport使用SpriteKit的[SKPhysicsBody bodyWithPolygonFromPath]
。这强制限定只能将凹多边形(而不是凸多边形)作为身体。
为了规避这个限制,您只需将身体分割成凹形状。SKImport在导入时自动将多个身体组合成一个SKPhysicsBody
。
编辑器的一个重要功能是将凸多边形分解为凹多边形。
编辑器有一些快捷键可以简化路径编辑。
快捷键 | 描述 |
---|---|
⌘ + P | 向当前体添加一个点。 |
⌘ + B | 创建一个新的体。 |
(Shift +) Tab | 在点之间导航。 |
⌘ + [] | 在体之间导航。 |
(Shift +) ←, →, ↓, ↑ | 轻微调整点。 |
遗憾的是,由于浏览器文件系统API的糟糕状态,SKImport编辑器不能在没有设置服务器并使用swf对象的情况下显示“另存为...'对话框。为了避免这个问题并使SKImport的编辑器能够独立运行,编辑器会打开一个新标签页,内容信任您使用CMD/Ctrl + S将内容保存到适当的位置。导出的文件将移动到锚点(0.5, 0.5),垂直翻转,并按当前缩放值缩放。
SKImport是由Adrian Cooney设计和实现的。许可协议如下MIT。