【问题标题】:SpriteKit: Physics bodies breaking under too much force (applyForce)SpriteKit:物理物体在过大的力下断裂(applyForce)
【发布时间】:2015-06-04 20:54:22
【问题描述】:

我遇到了最奇怪的行为,物理引擎认为如果有太多其他对象(圆形 SKPhysicsBody)推向墙壁(使用 applyForce()),墙壁(矩形 SKPhysicsBody)会破裂

据我所知,SpriteKit 没有对象断点或任何类似的概念。关于如何阻止这种情况发生的任何想法?

注意:如果我将 SKPhysicsBody.dynamic 更改为 FALSE,则身体不再断裂。只是为了确认应该归咎于物理引擎

视频 1:敌人很少,没有休息:

https://www.youtube.com/watch?v=0I2PUeX8GHQ&feature=youtu.be

视频 2:更多敌人,休息:

https://www.youtube.com/watch?v=-OkfifPCkmY&feature=youtu.be

【问题讨论】:

  • 你所说的“中断”是什么意思?
  • 与 PhysicsBody 关联的 SKNode 从场景中消失。很奇怪吧?它需要几百个身体推动它才能“破裂”
  • 你能发布这个问题的视频吗?
  • 是的,我可以。想知道人们在回答之前是否有足够的兴趣观看视频。今天晚些时候它会起来。
  • 嘿,视频已添加。有机会就去看看

标签: ios sprite-kit skspritenode


【解决方案1】:

物理实体的节点越高,帧率越低。

帧速率越低,引擎就越疯狂。有一次我什至看到它制造了某种黑洞。

如果您减少对墙壁的力,无论是重力还是来自施加力的速度,都会有所帮助。确保有足够的空间供他们使用也会有所帮助。

使用精确的碰撞检测甚至会进一步降低帧率。

【讨论】:

  • 我看到了各种各样的疯狂,你是对的。但这似乎是在没有帧率下降的情况下发生的。多达 50 具尸体推墙,没问题。 100+,墙壁倒塌(没有代码可以摧毁墙壁)。这让我疯狂。如果我没有得到更详细的信息,我会接受这个答案。谢谢
  • 也许问题不是帧率。我想这是一种相关性,而不是原因。但无论如何,如果您在封闭的形状内创建节点,请确保有足够的空间放置节点。
  • 嘿hamecanecha。在原始问题中添加了一些视频。介意看看吗?
  • 对不起,我不知道该说什么。但我可以想到解决方法......如果一旦球到达墙壁,它们就会停止施加力并且只是保持在它们的位置上怎么办?因此,使用联系人代表,您可以锁定他们的位置,或删除任何 skaction 应用力。
  • 我想到了这个解决方法,但需要一些工作(什么时候解锁等)所以我想我会先检查一下 SpriteKit 行为不端的原因。如果我无法弄清楚,我会尽快尝试。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多