我正在使用Swift在SpriteKit中製作遊戲。我不能爲我的生活找出爲什麼我的節點不會在屏幕上發生碰撞和反彈,就像SKSpriteNode的默認行爲一樣。SpriteKit SKNode不會與邊緣衝突
這裏是我的代碼從三個不同的文件:
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 the 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 up the world and bring in property list
self.anchorPoint = CGPoint(x: 0.5, y: 0.5) //0,0 to 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 will be the actual image you see of the 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")
}
}
這是一個錯誤或東西?運行Xcode beta 7.1。我實際上遵循了一個教程,它的行爲與那個人的行爲不一樣,即使我爲他正在輸入的函數鍵入函數。任何幫助或澄清讚賞!