Swift SpriteKit创建一个只有三个边可以通过的边框

时间:2017-03-28 02:11:30

标签: swift sprite-kit frame bounds

我正在尝试创建一个用户通过射击球进行游戏的游戏。我希望球从顶部边框和侧边框反弹。球最初放置在底部边界处,当用户触摸一个点时,球朝那个方向移动并从边界弹开。但是,我希望球再次触及底部边界时停止,而不是从它弹回。我已经做到这一点,以便球从所有边界反弹,但我希望它只能从顶部和两侧反弹。如果这段代码不足以做出正确的反应,我很抱歉;我在这个论坛上相对较新:)

     let border = SKPhysicsBody(edgeLoopFrom: self.frame)
    //create variable representing frame of gamescene

    border.friction = 0
    border.restitution = 1
    self.physicsBody = border

这是碰撞检测的代码。          func didBegin(_ contact:SKPhysicsContact){

    if (contact.bodyA.categoryBitMask == BodyType.ball.rawValue && contact.bodyB.categoryBitMask == BodyType.BottomBorder.rawValue){
        SmallBall.isPaused = true
        }
    else if(contact.bodyB.categoryBitMask == BodyType.ball.rawValue && contact.bodyA.categoryBitMask == BodyType.BottomBorder.rawValue)
    {
        SmallBall.isPaused = true
    }
}
}

1 个答案:

答案 0 :(得分:2)

我只是在一个稍长的矩形(黄绿色轮廓框)上创建edgeLoop而不是场景(白框)框架,以便它在场景下面垂下来。使其具有您目前拥有的所有相同属性。然后我会在场景下面创建另一个physicsBody(红色框)。然后在didBegin(_ contact: SKPhysicsContact)方法中检测与球和红色框的碰撞并将其停止

example