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

2024-04-05

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


您可以使用以下命令创建基于边缘的物理体+bodyWithEdgeLoopF​​romRect: https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/#//apple_ref/occ/clm/SKPhysicsBody/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))

}

About rect范围:

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

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式创建物理约束区域,SpriteKit 的相关文章

随机推荐