以编程方式创建受约束的物理区域SpriteKit

我想要两个区域,如下图所示,黄色区域包含精灵。 例如,我想让黄色区域的球反弹并reflection出黄色区域的边界。 如何在不使用sks文件的情况下以编程方式执行此操作?

在此处输入图像描述

使用+ bodyWithEdgeLoopF​​romRect创建基于边缘的物理实体:

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参数:

定义边的矩形。 矩形是相对于拥有节点的原点指定的。

希望这可以帮助!