2016-02-03 88 views

回答

3

您使用+bodyWithEdgeLoopFromRect:

override func didMoveToView(view: SKView) { 

    //Setup scene's physics body (setup the walls) 
    physicsBody = SKPhysicsBody(edgeLoopFromRect: frame) 

    let yellowSprite = SKSpriteNode(color: .yellowColor(), size: CGSize(width: 300, height: 300)) 
    yellowSprite.position = CGPoint(x: frame.midX, y: frame.midY) 

    //Create the rectangle which will represent physics body. 
    let rect = CGRect(origin: CGPoint(x: -yellowSprite.size.width/2, y: -yellowSprite.size.height/2), size: yellowSprite.size) 
    yellowSprite.physicsBody = SKPhysicsBody(edgeLoopFromRect: rect) 

    addChild(yellowSprite) 

    //Add Red ball "inside" the yellow sprite 
    let red = SKShapeNode(circleOfRadius: 20) 
    red.fillColor = .redColor() 
    red.strokeColor = .clearColor() 
    red.position = yellowSprite.position 
    red.physicsBody = SKPhysicsBody(circleOfRadius: 20) 
    red.physicsBody?.restitution = 1 
    red.physicsBody?.friction = 0 
    red.physicsBody?.affectedByGravity = false 

    addChild(red) 

    red.physicsBody?.applyImpulse(CGVector(dx: 20, dy: 15)) 

} 

关于rect参数创建基于边缘物理学体:

定义边缘的矩形。相对于拥有节点的原点,该矩形被指定为 。

希望这会有所帮助!

+0

完美,谢谢!我已经添加了red.physicsBody?.linearDamping = 0,球完全反射。 – spigen