/ / Jak stworzyć SKPhysicsBody z otworami? - ios, swift, sprite-kit, skphysicsbody

Jak utworzyć SKPhysicsBody z otworami?-ios, swift, sprite zestaw, skphysicsbody

Zastanawiałem się, jak mogę stworzyć bardziej złożone ciało SKPhysicsyBody w ten sposób? Chcę najgorętsze poznać czarne części.

wprowadź opis obrazu tutaj

Wyeksportowałem ten kształt za pomocą PaintCode do CG Rect.

var barrierpath2Path = UIBezierPath()
barrierpath2Path.moveToPoint(CGPointMake(52, 26))
barrierpath2Path.addLineToPoint(CGPointMake(52, 26))
barrierpath2Path.addCurveToPoint(CGPointMake(26, 52), controlPoint1: CGPointMake(52, 40.36), controlPoint2: CGPointMake(40.36, 52))
barrierpath2Path.addLineToPoint(CGPointMake(26, 52))
barrierpath2Path.addCurveToPoint(CGPointMake(0, 26), controlPoint1: CGPointMake(11.64, 52), controlPoint2: CGPointMake(0, 40.36))
barrierpath2Path.addLineToPoint(CGPointMake(0, 26))
barrierpath2Path.addCurveToPoint(CGPointMake(26, 0), controlPoint1: CGPointMake(0, 11.64), controlPoint2: CGPointMake(11.64, 0))
barrierpath2Path.addLineToPoint(CGPointMake(26, 0))
barrierpath2Path.addCurveToPoint(CGPointMake(52, 26), controlPoint1: CGPointMake(40.36, 0), controlPoint2: CGPointMake(52, 11.64))
barrierpath2Path.closePath()
barrierpath2Path.moveToPoint(CGPointMake(46.8, 26))
barrierpath2Path.addLineToPoint(CGPointMake(46.8, 26))
barrierpath2Path.addCurveToPoint(CGPointMake(39, 18.2), controlPoint1: CGPointMake(46.8, 21.69), controlPoint2: CGPointMake(43.31, 18.2))
barrierpath2Path.addLineToPoint(CGPointMake(39, 18.2))
barrierpath2Path.addCurveToPoint(CGPointMake(31.2, 26), controlPoint1: CGPointMake(34.69, 18.2), controlPoint2: CGPointMake(31.2, 21.69))
barrierpath2Path.addLineToPoint(CGPointMake(31.2, 26))
barrierpath2Path.addCurveToPoint(CGPointMake(39, 33.8), controlPoint1: CGPointMake(31.2, 30.31), controlPoint2: CGPointMake(34.69, 33.8))
barrierpath2Path.addLineToPoint(CGPointMake(39, 33.8))
barrierpath2Path.addCurveToPoint(CGPointMake(46.8, 26), controlPoint1: CGPointMake(43.31, 33.8), controlPoint2: CGPointMake(46.8, 30.31))
barrierpath2Path.closePath()
barrierpath2Path.moveToPoint(CGPointMake(27.3, 14.74))
barrierpath2Path.addLineToPoint(CGPointMake(27.3, 14.74))
barrierpath2Path.addCurveToPoint(CGPointMake(19.5, 6.94), controlPoint1: CGPointMake(27.3, 10.43), controlPoint2: CGPointMake(23.81, 6.94))
barrierpath2Path.addLineToPoint(CGPointMake(19.5, 6.94))
barrierpath2Path.addCurveToPoint(CGPointMake(11.7, 14.74), controlPoint1: CGPointMake(15.19, 6.94), controlPoint2: CGPointMake(11.7, 10.43))
barrierpath2Path.addLineToPoint(CGPointMake(11.7, 14.74))
barrierpath2Path.addCurveToPoint(CGPointMake(19.5, 22.54), controlPoint1: CGPointMake(11.7, 19.05), controlPoint2: CGPointMake(15.19, 22.54))
barrierpath2Path.addLineToPoint(CGPointMake(19.5, 22.54))
barrierpath2Path.addCurveToPoint(CGPointMake(27.3, 14.74), controlPoint1: CGPointMake(23.81, 22.54), controlPoint2: CGPointMake(27.3, 19.05))
barrierpath2Path.closePath()
barrierpath2Path.moveToPoint(CGPointMake(27.3, 37.26))
barrierpath2Path.addLineToPoint(CGPointMake(27.3, 37.26))
barrierpath2Path.addCurveToPoint(CGPointMake(19.5, 29.46), controlPoint1: CGPointMake(27.3, 32.95), controlPoint2: CGPointMake(23.81, 29.46))
barrierpath2Path.addLineToPoint(CGPointMake(19.5, 29.46))
barrierpath2Path.addCurveToPoint(CGPointMake(11.7, 37.26), controlPoint1: CGPointMake(15.19, 29.46), controlPoint2: CGPointMake(11.7, 32.95))
barrierpath2Path.addLineToPoint(CGPointMake(11.7, 37.26))
barrierpath2Path.addCurveToPoint(CGPointMake(19.5, 45.06), controlPoint1: CGPointMake(11.7, 41.57), controlPoint2: CGPointMake(15.19, 45.06))
barrierpath2Path.addLineToPoint(CGPointMake(19.5, 45.06))
barrierpath2Path.addCurveToPoint(CGPointMake(27.3, 37.26), controlPoint1: CGPointMake(23.81, 45.06), controlPoint2: CGPointMake(27.3, 41.57))
barrierpath2Path.closePath()
barrierpath2Path.miterLimit = 4;



monster.physicsBody = SKPhysicsBody(polygonFromPath: barrierpath2Path.CGPath)

Ale symulator pokazuje tylko jedną dziurę (i png z tyłu)? Co tu jest nie tak? wprowadź opis obrazu tutaj

Odpowiedzi:

2 dla odpowiedzi № 1

Najprawdopodobniej chcesz sprawić, by dziury były dziecinnewęzły z własnymi ciałami fizycznymi. Umożliwi to wszystkim posiadanie własnych ciał fizycznych i poruszanie się zgodnie ze sobą bez żadnych problemów

Aby rozwinąć tę odpowiedź, możeszmożna także użyć inicjatora wygody SKPhysicsBody, aby utworzyć ciało fizyczne z wartości alfa w teksturze. Spowoduje to pogorszenie wydajności, ale powinno robić to, co chcesz.

l.physicsBody = SKPhysicsBody(texture: l.texture, size: l.size)