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

How can I make an SKPhysicsBody for this image using CGPath?

我正在尝试使用 CGPath 多边形为此 SKSpriteNode 制作 SKPhysics 主体。

问题是,当我检查此节点和播放器节点之间的碰撞时,执行了 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)

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

谢谢

仅供参考,物理线是绿色的,因此绿色精灵可能不是最佳选择,因为您看不到这些线。

您的精灵默认有一个中心锚点或 (0, 0) 的锚点。因此,您的物理点需要考虑到这一点。右上角是中心宽度的一半和中心高度的一半等。你有中心的全宽和中心的全高,这就是问题所在。

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)])