我正在与我的儿子一起开发一款基于Paul Hudson的Dive Into SpriteKit书籍的基础游戏。
按照书上的指示,我们为太空船和太空垃圾卫星创建了一个精灵。虽然它可以运作,但我们注意到有时飞船会穿过垃圾。我们尝试使用场景编辑器添加精灵并打开物理引擎: 引人注目的是,使用场景编辑器添加的船节点生成的物理体轮廓完全错误,但是进行...
按照书上的指示,我们为太空船和太空垃圾卫星创建了一个精灵。虽然它可以运作,但我们注意到有时飞船会穿过垃圾。我们尝试使用场景编辑器添加精灵并打开物理引擎: 引人注目的是,使用场景编辑器添加的船节点生成的物理体轮廓完全错误,但是进行...
player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)
这对修复火箭飞船很有效,但对于垃圾卫星精灵进行相同的操作总是会产生相同的复杂物理实体。
我唯一的猜测是加载和分析纹理的方式存在问题。这可以解释为什么重复执行此操作会修复火箭飞船,但是卫星有何问题呢?如何确保正确准备纹理以使物理实体的 alpha 掩码可靠工作?
我将感激任何关于如何解决这个问题的建议。
我尝试使用 alphaThreshold:
对船的轮廓线条有所改善,但似乎对卫星轮廓没有影响。
我尝试重新绘制卫星纹理,以排除书中原始文件的问题。使用类似形状的全新文件时,问题完全相同。
我们还测试了 iOS 12 和 iOS 13,结果相同。书中的"规范"代码也有完全相同的问题。
请查看我们游戏的 GitHub 完整实现。
在我们的游戏之外,快速复现此问题的方法:
- 在Xcode中使用游戏模板创建新项目
- 将卫星资源添加到资源目录中:
- 在GameScene.sks中添加彩色精灵,选择卫星纹理,并在物理定义部分将主体类型设置为“阿尔法蒙版”。
我们的结果如下所示:
预期结果是一个准确的精灵轮廓。