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