首页 > 解决方案 > 如何使用 CGPath 为该图像制作 SKPhysicsBody?

问题描述

我正在尝试使用 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)

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

谢谢你

标签: swiftxcodesprite-kitskphysicsbody

解决方案


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

默认情况下,您的精灵具有 (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)])

推荐阅读