你可以在
swift中使用JSTileMap吗?如果是的话,你如何使用它?如果我不能在swift中使用它,或者它太麻烦了,那么还有什么我可以用于.tmx地图.请注意,我正在使用精灵工具包
解决方法
是的,你可以,我昨天刚开始使用它,还没有发现问题!首先导入JSTileMap文件和libz.dylib框架.然后使用以下导入添加桥接标头:
#import "JSTileMap.h" #import "LFCGzipUtility.h"
接下来只需进入SKScene文件并创建一个tileMap变量,如下所示:
var tileMap = JSTileMap(named: "tileMap.tmx")
我发现定位有点棘手,所以生病了.
self.anchorPoint = CGPoint(x: 0,y: 0) self.position = CGPoint(x: 0,y: 0) //Change the scenes anchor point to the bottom left and position it correctly let rect = tileMap.calculateAccumulatedFrame() //This is not necessarily needed but returns the CGRect actually used by the tileMap,not just the space it Could take up. You may want to use it later tileMap.position = CGPoint(x: 0,y: 0) //Position in the bottom left addChild(tileMap) //Add to the scene
编辑
下面是我用来创建SKSpriteNodes楼层的代码:
func addFloor() { for var a = 0; a < Int(tileMap.mapSize.width); a++ { //Go through every point across the tile map for var b = 0; b < Int(tileMap.mapSize.height); b++ { //Go through every point up the tile map let layerInfo:TMXLayerInfo = tileMap.layers.firstObject as TMXLayerInfo //Get the first layer (you may want to pick another layer if you don't want to use the first one on the tile map) let point = CGPoint(x: a,y: b) //Create a point with a and b let gid = layerInfo.layer.tileGidAt(layerInfo.layer.pointForCoord(point)) //The gID is the ID of the tile. They start at 1 up the the amount of tiles in your tile set. if gid == 2 || gid == 9 || gid == 8{ //My gIDs for the floor were 2,9 and 8 so I checked for those values let node = layerInfo.layer.tileAtCoord(point) //I fetched a node at that point created by JSTileMap node.physicsBody = SKPhysicsBody(rectangleOfSize: node.frame.size) //I added a physics body node.physicsBody?.dynamic = false //You Now have a physics body on your floor tiles! :) } } } }
原文地址:https://www.jb51.cc/iOS/330659.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。