我使用的是自定義的磚類:雪碧套件 - 創建從didBeginContact節點()
import SpriteKit
class Brick: SKSpriteNode {
enum type { case Normal }
convenience init (type: Brick.type) {
self.init(color: .greenColor(), size: CGSizeMake(75, 25))
physicsBody.SKPhysicsBody(rectangleOfSize: size)
physicsBody!.mass = 9999
physicsBody!.affectedByGravity = false
position = CGPointMake(100, 50)
// Category and collision bitmasks ...
// Action to move the brick upwards ...
}
// Stuff
}
在我的場景,我創建了一個初始的磚,和一切工作就好了。但是,當我嘗試在didBeginContact()
函數中添加一個塊時,我得到了意想不到的結果。
我有一個SKNode
在屏幕的1/5高度。所以每次一塊磚達到這樣的高度,它將使這個無形的節點接觸並創建一個新磚:
// Inside SKScene
func didBeginContact(contact: SKPhysicsContact) {
// I set physics body A and B ...
if a.categoryBitMask == Category.brick && b.categoryBitMask == Category.brickSpawner {
addChild(Brick(type: .Normal))
}
}
所以問題是:當我創建這個函數內部新磚,位置設置爲( 0,0),而不是(012,3737,類中定義的(100,50))。其實,如果我繼續並使用println(brick.position)
,我會得到(100,50),但在屏幕上它看起來位於(0,0)。
如果我在代碼的其他地方創建了一個磚塊,例如在touchesBegan()
或update()
函數中,位置設置正確。只有在從didBeginContact()
創建節點時纔會出現此問題。
謝謝,解決了問題! – Heriotza