swift - 如何使用 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)
有人可以帮我弄清楚我做错了什么吗?
谢谢你
解决方案
仅供参考,物理线条是绿色的,因此绿色精灵可能不是您看不清线条的最佳选择。
默认情况下,您的精灵具有 (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)])
推荐阅读
- php - 阻止文件夹,同时允许其中包含一些 url 模式
- python - 在python中将非填充字符串转换为日期(以给定格式)
- python-3.x - 使用 Python 3 matplotlib 按钮 - 重新调整 y 轴
- c# - 在字典初始化程序中使用方括号和花括号有区别吗?
- perl - PERL 脚本使用 CSV 文件比较不同主机中今天和昨天的分区使用情况
- javascript - UglifyJS 不修改道具和状态属性
- javascript - 反应和引导 v4 延迟崩溃以渲染组件
- html - Bootstrap:当向下滚动页面时,jumbotron 图像被滚动:想要修复它
- scala - 在scala中添加两个由链表表示的数字
- sql-server - Spring boot:数据库连接未正确关闭