ios - SpriteKit SKNode does not collide with edge -


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