i'm making game in spritekit swift. cannot life of me figure out why node not collide , bounce off screen, default behavior skspritenode.
here's code 3 different files:
gameviewcontroller:
override func viewdidload() { super.viewdidload() let skview = view as! skview skview.showsfps = true skview.showsnodecount = true let battlescene = cslevel() battlescene.size = view.frame.size battlescene.scalemode = .aspectfill skview.presentscene(battlescene) }
cslevel:
//sorry here's real code class cslevel: skscene, skphysicscontactdelegate { var myworld: sknode! var leader: cscharacter? override init(size: cgsize) { super.init(size: size) setupscene() setupcharacters() } required init?(coder adecoder: nscoder) { fatalerror("init(coder:) has not been implemented") } override func didmovetoview(view: skview) { super.didmovetoview(view) } func setupscene() { //take care of setting world , bring in property list self.anchorpoint = cgpoint(x: 0.5, y: 0.5) //0,0 1,1 myworld = sknode() self.addchild(myworld) let map = skspritenode(imagenamed: "map") map.position = cgpoint(x: 0, y: 0) myworld.addchild(map) myworld.xscale = 1 myworld.yscale = 1 //setup physics self.physicsworld.gravity = cgvector(dx: 0, dy: -1) self.physicsworld.contactdelegate = self myworld.physicsbody = skphysicsbody(edgeloopfromrect: screenframe) myworld.physicsbody?.categorybitmask = wallcategory } func setupcharacters() { leader = cscharacter() myworld.addchild(leader!) } override func update(currenttime: nstimeinterval) { } func didbegincontact(contact: skphysicscontact) { let firstbody = contact.bodya let secondbody = contact.bodyb if firstbody.categorybitmask == wallcategory || secondbody.categorybitmask == wallcategory { } } }
cscharacter:
class cscharacter: sknode { var character: skspritenode! //this actual image see of character override init() { super.init() character = skspritenode(imagenamed: "character") self.addchild(character) self.physicsbody = skphysicsbody(circleofradius: character.frame.size.width / 2) self.physicsbody?.dynamic = true self.physicsbody?.restitution = 5 self.physicsbody?.allowsrotation = true self.xscale = 2 self.yscale = 2 self.physicsbody?.categorybitmask = playercategory self.physicsbody?.collisionbitmask = wallcategory self.physicsbody?.contacttestbitmask = wallcategory } required init?(coder adecoder: nscoder) { fatalerror("init(coder:) has not been implemented") } }
is bug or something? running xcode beta 7.1. i'm literally following tutorial , doesn't behave same way guy's does, type function function he's typing. or clarifications appreciated!!!
here# (hope helps)
try adding "skview.showsphysics = true" right below "skview.showsnodecount = true" automatically trace lines around physicsbodys. when run app should see thin blue line around skscene edge loop is. if not may need add argument "let battlescene = cslevel()". "let battlescene = cslevel()" "let battlescene = cslevel(size: skview.frame.size)".
in other words, node may falling through edge loop because size of edge loop not specified
Comments
Post a Comment