swift - tilemap in sprite kit -
this drawing tilemap in spritekit. following error:
terminating app due uncaught exception 'nsinvalidargumentexception', reason: 'attemped add sknode has parent: name:'(null)' texture:['nil'] position:{64, 0} size:{0, 0} rotation:0.00'
this gameviewcontroller.swift:
import uikit import spritekit class gameviewcontroller: uiviewcontroller { override func viewdidload() { super.viewdidload() let scene = gamescene(size: cgsize(width: 1024, height: 768)) // configure view. let skview = self.view as! skview skview.showsfps = true skview.showsnodecount = true /* sprite kit applies additional optimizations improve rendering performance */ skview.ignoressiblingorder = true /* set scale mode scale fit window */ scene.scalemode = .aspectfill skview.presentscene(scene) } override func prefersstatusbarhidden() -> bool { return true } } this gamescene.swift:
import spritekit class gamescene: skscene { let dungeon = sknode() let readablemap: [[int]] = [ [01, 00, 01, 01], [01, 00, 01, 01], [01, 00, 01, 01], [00, 01, 00, 01]] override init(size: cgsize) { super.init(size: size) } required init?(coder adecoder: nscoder) { fatalerror("init(coder:) has not been implemented") } override func didmovetoview(view: skview) { /* setup scene here */ drawmap() } override func touchesbegan(touches: set<nsobject>, withevent event: uievent) { /* called when touch begins */ touch in (touches as! set<uitouch>) { let location = touch.locationinnode(self) } } override func update(currenttime: cftimeinterval) { /* called before each frame rendered */ } func drawmap() { let map = readablemap.reverse() let tiles = [[tile]](count: map.count, repeatedvalue: [tile](count: map[0].count, repeatedvalue: tile())) in 0..<map.count { j in 0..<map[0].count { let tile = tiles[j][i] tile.position = cgpoint(x: j * int(tile.tilesize.width), y: * int(tile.tilesize.height)) dungeon.addchild(tile) } } } } this class in tile.swift:
import spritekit class tile: skspritenode { let tilesize: cgsize = cgsize(width: 64, height: 64) let tiletexture: sktexture = sktexture(imagenamed: "o") } what reason? anyone, i'm still learning.
Comments
Post a Comment