在我的 swift SpriteKit 游戏中,物理体的轮廓通过所有其他节点显示

Posted

技术标签:

【中文标题】在我的 swift SpriteKit 游戏中,物理体的轮廓通过所有其他节点显示【英文标题】:outline of physics body is showing through all other nodes in my swift SpriteKit game 【发布时间】:2021-03-10 19:39:39 【问题描述】:

我正在制作一款精灵从天而降的游戏,这些精灵与玩家进行了碰撞测试。但是,精灵周围的物理体通过我在它们上方添加的所有标签和精灵节点显示出来。我认为物理体甚至没有颜色或任何东西,但出于某种原因,我可以在我的游戏中看到它们。

这里是精灵落在 SKLabelNode 后面的屏幕截图。我将标签的 zPosition = 1 设置为在精灵的前面,但物理体的轮廓通过以下方式显示: Here is a picture of the label node with a small line that is barely visible but is exactly where I set the sprite's physics body to be

如您所见,精灵消失在标签后面,但物理体没有。

这是游戏结束画面的另一个图像,它只是在游戏场景中添加了许多节点,并且游戏动作在后台暂停。如您所见,精灵的轮廓仍然清晰可见: Here is the second example

这是我创建精灵物理体的代码:

obstacle.physicsBody = SKPhysicsBody(rectangleOf: obstacle.size)
obstacle.physicsBody?.isDynamic = true
obstacle.physicsBody?.categoryBitMask = obstacleCategory
obstacle.physicsBody?.contactTestBitMask = playerCategory
obstacle.physicsBody?.collisionBitMask = 0
obstacle.physicsBody?.usesPreciseCollisionDetection = false

那么我怎样才能让精灵的物理体透明/不可见呢? 任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

有一个标志,设置后,您可以看到物理实体。这对于检查碰撞等很有用。 在 GameviewController 中,注释掉 view.showsPhysics = true。所以

//view.showsPhysics = true

【讨论】:

以上是关于在我的 swift SpriteKit 游戏中,物理体的轮廓通过所有其他节点显示的主要内容,如果未能解决你的问题,请参考以下文章

将物理应用到自定义 SKSpriteNode 类

SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点

在特定场景中构建 SpriteKit/GameKit 排行榜

如何在swift(SpriteKit)中绘制一个作为单个节点的圆点[关闭]

为啥我的声音让我的游戏在 Swift Spritekit 中滞后?

如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏