Swift SpriteKit Создайте границу, где проходимы только три стороны

Я пытаюсь создать игру, в которую пользователь играет, стреляя шарами. Я хочу, чтобы шары отскакивали от верхней границы и боковых границ. Мяч изначально находится на нижней границе, и когда пользователь касается места, мяч движется в этом направлении и отскакивает от границ. Однако я хочу, чтобы мяч остановился, как только он снова коснется нижней границы, а не отскочит от нее. Я сделал так, чтобы мяч отскочил от всей границы, но я бы хотел, чтобы он отскакивал только от верха и боков. Мои извинения, если этого кода недостаточно для правильного ответа; Я относительно новичок на этом форуме:)

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

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

Это код для обнаружения столкновения. func didBegin(_ контакт: 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 ответ

Я бы просто создал edgeLoop на немного более длинном прямоугольнике (желто-зеленый контурный прямоугольник), чем на рамке сцены (белый прямоугольник), чтобы он свисал ниже сцены. Сделайте так, чтобы у него были все те же свойства, что и у вас. Затем я бы создал другую физическую телу (красное поле) чуть ниже сцены. Тогда в didBegin(_ contact: SKPhysicsContact) метод обнаружения столкновения с мячом и красной коробкой и остановки его

пример

Другие вопросы по тегам