Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以编程方式创建物理约束区域,SpriteKit_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 以编程方式创建物理约束区域,SpriteKit

Ios 以编程方式创建物理约束区域,SpriteKit,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我想要两个区域,如下图所示,其中黄色区域包含精灵。例如,我希望黄色区域中的球在黄色区域的边界上反弹和反射。如何在不使用sks文件的情况下以编程方式执行此操作 使用 关于rect参数: 定义边的矩形。指定了矩形 相对于所属节点的原点 希望这有帮助 太好了,谢谢!我添加了红色.physicsBody?.linearDamping=0,球处于完美反射状态。 override func didMoveToView(view: SKView) { //Setup scene's physics

我想要两个区域,如下图所示,其中黄色区域包含精灵。例如,我希望黄色区域中的球在黄色区域的边界上反弹和反射。如何在不使用sks文件的情况下以编程方式执行此操作


使用

关于
rect
参数:

定义边的矩形。指定了矩形 相对于所属节点的原点


希望这有帮助

太好了,谢谢!我添加了红色.physicsBody?.linearDamping=0,球处于完美反射状态。
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))

}