2015-10-12 72 views
1

試圖讓我的SKSpriteNode停留在使用edgeLoopF​​romRect:view.frame的只有肖像的佈局框架內,並且它僅從框架的左側反彈,仍然留下間隙....physicsBody = SKPhysicsBody(edgeLoopF​​romRect:view.frame)

試圖用 「視圖」,edgeLoopF​​romRect:框架,它飛走了屏幕...

任何幫助,將不勝感激..

func makeShip() { 
    let ship = playerShip 
    ship.position = CGPoint(x: frame.size.width/2, y: frame.size.height/2) 
    ship.physicsBody = SKPhysicsBody(rectangleOfSize: ship.frame.size) 
    ship.physicsBody!.dynamic = true 
    ship.physicsBody!.affectedByGravity = false 
    ship.physicsBody!.mass = 0.08 
    addChild(ship) 
} 


override func didMoveToView(view: SKView) { 

    makeShip() 
    physicsBody = SKPhysicsBody(edgeLoopFromRect: view.frame) 
    motionManager.startAccelerometerUpdates() 
} 
+0

有兩個問題。你有沒有嘗試將'ship'物理體設置爲'rectangleOfSize:ship.size'?我不確定你是否在尋找框架(隨時糾正我)。並且您是否嘗試過'ship.physicsBody!.usesPreciseCollisionDetection = true'以確保船舶無法通過邊界彈出? – Gliderman

+0

是的,我通過binarysubstrate –

回答

1

override func didMoveToView(view: SKView)嘗試添加:

let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame) 
borderBody.friction = 0 
self.physicsBody = borderBody