didBeginContact logic OSX swift -
i having trouble logic inside of didbegincontact on osx game i'm creating. written in swift, here code is:
func didbegincontact(contact: skphysicscontact) { let collision: uint32 = contact.bodya.categorybitmask | contact.bodyb.categorybitmask if collision == physicscategory.player | physicscategory.wall { } else if collision == physicscategory.player | physicscategory.box { player.setjump(true) } else if collision == physicscategory.player | physicscategory.floor { player.setjump(true) } if collision == physicscategory.laser | physicscategory.wall { effects = skemitternode(filenamed: "explosion.sks") addchild(effects!) laser!.removefromparent() } else if collision == physicscategory.laser | physicscategory.floor { effects = skemitternode(filenamed: "explosion.sks") addchild(effects!) laser!.removefromparent() }
i feel mess of if statements horribly inefficient, have no idea how convert switch statement or if more efficient. i've tried removing 'else' , have series of 'if' statements have more bugs when collisions happen (boxes falling through walls ect..) advice appretiated
in case stumbles across this, here how resolved it.
let collision: uint32 = contact.bodya.categorybitmask | contact.bodyb.categorybitmask switch collision{ case physicscategory.player | physicscategory.floor: playerobj.setjump(true) case physicscategory.player | physicscategory.box: playerobj.setjump(true) case physicscategory.player | physicscategory.wall: return // ect... default: return }
Comments
Post a Comment