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)
метод обнаружения столкновения с мячом и красной коробкой и остановки его