SpriteKit:物理物体“ alpha”形状问题

时间:2019-06-29 11:34:25

标签: sprite-kit collision-detection

我正在与儿子一起根据Dive Into SpriteKi by Paul Hudson这本书进行基本游戏。

在本书之后,我们为太空飞船和太空垃圾卫星创建了一个精灵。它可行,但我们注意到有时船会穿过垃圾。我们尝试使用场景编辑器添加精灵,然后打开了物理:

picture showing the issues with physics body shapes

值得注意的是,使用场景编辑器添加的飞船节点生成的身体轮廓完全错误,但是

player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)

可以修复它。另一方面,对垃圾卫星子画面执行相同操作会始终产生相同的回旋身体。

我唯一的猜测是,如何(或何时)加载和分析纹理有问题。这将解释为什么这样做会反复固定火箭飞船……但是卫星到底出了什么问题?以及如何确保正确准备纹理,以便物理机体的Alpha蒙版可靠工作?

对于如何处理此问题(-s),我将不胜感激。

我尝试使用alphaThreshold:,它对船的轮廓有所影响,但似乎对卫星轮廓没有影响。

我试图从头开始重新绘制卫星纹理,以排除书中原始文件的问题。对于形状相似的全新文件,问题完全相同。

我们还测试了iOS 12和iOS 13的结果。本书中的“规范”代码存在完全相同的问题。

请查看我们的游戏complete implementation on GitHub

从游戏中重现问题的快速方法:

  1. 使用游戏模板在Xcode中创建新项目
  2. 将卫星资产添加到资产目录:

satellite

  1. 在GameScene.sks中添加Color Sprite,选择人造卫星作为纹理,然后在“物理定义”部分中将身体类型设置为“ Alpha蒙版”。

在我们的案例中,结果如下:

enter image description here

预期结果是精灵的准确轮廓。

0 个答案:

没有答案