大佬教程收集整理的这篇文章主要介绍了ios – 使用SpriteKit和Swift的PhysicsBody是零,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func loadLevel() { var levels = Levels().data var frameSize = view.frame.size var thisLevel = levels[currentLevel] println("running load level") for (rowIndex,row) in enumerate(thisLevel) { for (colIndex,col) in enumerate(row) { if col == 4 { conTinue } println("COL: \(col)") var tile = SKSpriteNode(texture: SKTexture(imagenamed: "brick_\(tileMap[col])")) tile.name = "tile_\(rowIndeX)_\(colIndeX)" tile.position.y = frameSize.height - (tile.size.height * CGFloat(rowIndeX)) - (tile.size.height/2) tile.position.x = tile.size.width * CGFloat(colIndeX) + (tile.size.width/2) var physicsBody = SKPhysicsBody(rectangLeofSize: tile.sizE) tile.physicsBody = physicsBody tile.physicsBody.affectedByGravity = false tile.physicsBody.categoryBitMask = ColliderType.block.toRaw() tile.physicsBody.contactTESTBitMask = ColliderType.ball.toRaw() tile.physicsBody.collisionBitMask = ColliderType.ball.toRaw() scene.addChild(tilE) tileCount++ } } }
这是我的ColliderType
enum ColliderType:UInt32 { case Paddle = 1 case Block = 2 case Wall = 3 case Ball = 4 }
func reset() { tileCount = 0 var removeTiles = [SKSpriteNode]() // remove all the tiles for child in scene.children { var a_tile = child as SKSpriteNode if a_tile.name.hasPrefix("tile_") { a_tile.removeFromParent() a_tile.name = "" removeTiles.append(a_tilE) } } removeTiles.removeAll(keepCapacity: falsE) ball!.position = CGPoint(x: 200,y: 200) ballVel = CGPoint(x: 0,y: -5) currentLeveL++ loadLevel() lost = false won = false }
这是我的关卡结构
struct Tile { let map = ["blue","green","purple","red"] } struct Levels { let data = [ [ [4,4,4],[4,1,2,3,4] ],[ [0,0],[1,1],[2,2],[3,3] ] ] }
以上是大佬教程为你收集整理的ios – 使用SpriteKit和Swift的PhysicsBody是零全部内容,希望文章能够帮你解决ios – 使用SpriteKit和Swift的PhysicsBody是零所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。