我正在尝试使用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 :(得分: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)])