如何使用CGPath为此图像制作SKPhysicsBody?

时间:2018-05-01 23:27:45

标签: swift xcode sprite-kit skphysicsbody

我正在尝试使用CGPath多边形为此SKSpriteNode创建一个SKPhysics主体。

enter image description here

问题在于,当我检查此节点与播放器节点之间的冲突时,即使它们没有相互接触,也会执行didBeginContact方法。我相信他们的坐标有问题,但我看不到多边形线,这让我很难看到线条的准确性。

以下是我正在使用的代码:

 let triangle = SKSpriteNode(imageNamed: "Triangle_ZigZag")
 let trianglePath = CGMutablePath()

 trianglePath.addLines(between: [CGPoint(x: triangle.size.width, 
                                 y: triangle.size.height),

                                CGPoint(x: triangle.size.width, 
                                 y: - triangle.size.height),

                                 CGPoint(x: -triangle.size.width,
                                 y: triangle.size.height / 2)])

 trianglePath.closeSubpath()
 triangle.physicsBody = SKPhysicsBody(polygonFrom: trianglePath)

有人可以帮我弄清楚我做错了什么吗?

谢谢

1 个答案:

答案 0 :(得分:2)

FYI物理线是绿色的,所以绿色精灵可能不是你能看到线条的最佳选择。

默认情况下,你的精灵有一个中心anchorPoint或一个(0,0)的anchorPoint。因此,您的物理要点需要考虑到这一点。右上角是中心宽度的一半,距离中心的高度的一半等。从中心开始全宽,从中心开始全高,这就是问题。

trianglePath.addLines(between: [CGPoint(x: triangle.size.width / 2, y: triangle.size.height / 2), CGPoint(x: triangle.size.width / 2, y: -triangle.size.height / 2), CGPoint(x: -triangle.size.width / 2, y: 0)])