Вот код теста:SpriteKit PhysicsBody не применяя для моей кривой Безье
var paths = UIBezierPath()
var bottomLeft = CGPoint(x: dim.minX, y:dim.minY)
var bottomRight = CGPoint(x: dim.maxX , y: dim.minY)
var topRight = CGPoint(x: dim.maxX, y: dim.maxY)
var topLeft = CGPoint(x: dim.minX, y: dim.maxY)
paths.moveToPoint(bottomRight)
paths.addLineToPoint(topRight)
paths.moveToPoint(topRight)
paths.addLineToPoint(topLeft)
paths.moveToPoint(topLeft)
paths.addLineToPoint(bottomLeft)
paths.moveToPoint(bottomLeft)
paths.addLineToPoint(bottomRight)
var n = SKShapeNode(path: paths.CGPath)
n.strokeColor = UIColor.greenColor()
n.physicsBody = SKPhysicsBody(edgeLoopFromPath: paths.CGPath)
shapeLayer.addChild(n)
Он рисует стандартный прямоугольник. Я добавлю некоторую кривую в середине от topRight до topLeft points, но я хотел протестировать ее с помощью простого rect. Я тестирую столкновение с мячом, и он, кажется, только сталкивается с линией от bottomRight до topRight и игнорирует остальные. Кто-нибудь есть идея о том, что происходит здесь?
skView.showsPhysics = YES; может помочь вам, вы можете увидеть тонкие физические тела вокруг ваших фигур. – dragoneye
@dragoneye Спасибо за подсказку. Похоже, что применяемое физическое тело неверно. Есть ли у вас другие предложения? Я обновил исходное сообщение с изображением – dchhetri