【问题标题】:SpriteKit Physics: Ignore when on different z planeSpriteKit Physics:在不同的z平面上时忽略
【发布时间】:2013-11-17 22:56:39
【问题描述】:

使用 SpriteKit,是否有可能有两个节点相互碰撞,但是当引入另一个节点时,物理的工作方式会发生变化吗?

例如,考虑以下 3 个节点:
- 对象
- Object_Hole
- 播放器

所以,一个包含玩家(橙色圆圈)和对象(蓝色矩形)的场景:

在上面的场景中,玩家(圆形)会受到重力影响并与物体(方形)发生碰撞。我通过使用物理体、类别和碰撞位掩码知道这是如何工作的。

现在,介绍 Object_Hole(绿色方块):

在上面的场景中,Object_Hole(绿色方块)覆盖了 Object(蓝色矩形)——它可以在同一个 z 平面或更高的平面上。

是否可以让Player(圆)上的physicsBody不与Object_Hole所在区域的Object发生碰撞?

如果有比添加覆盖节点更好的方法来实现这一点,请告诉我。否则有可能吗?

谢谢!

【问题讨论】:

  • 那会很困难。如果你想让球穿过绿色盒子但又在蓝色盒子的侧面反弹,那么你必须将蓝色盒子分成两个物体,并根据绿色盒子的位置不断地重新创建它们以改变它们的形状。
  • 有没有更简单的方法可以在 SpriteKit 的节点(带有物理体)中创建“洞”效果?
  • 不,因为没有“洞”之类的东西。即使使用普通的 Box2D,您也必须做基本相同的事情。困难的部分不是让玩家通过,而是只在绿色圆圈区域禁用碰撞,同时允许玩家从另一面墙的侧面反弹。因为如果蓝墙是一个完整的物体,一旦你启用了与玩家的碰撞仅仅一帧,碰撞解决就会立即将玩家移出蓝框。
  • 好的 - 感谢您的回答。

标签: ios sprite-kit skphysicsbody sknode


【解决方案1】:

您可以考虑使用categoryBitMask 和collisionBitMask: https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/Reference/Reference.html#//apple_ref/occ/instp/SKPhysicsBody/collisionBitMask

如果您希望您的球与物体碰撞,而不是物体上的某个孔,您可能希望将您的物体分成两部分,中间有一个实际的孔。将空洞精灵的categoryBitMask 和collisionBitMask 设置为与物体和球的完全不同。

// sprite1 and sprite2 will never collide.
SKSpriteNode *sprite1 = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(20.0f, 10.0f)];
sprite1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sprite.size];
sprite1.physicsBody.collisionBitMask = 0xffff0000;
sprite1.physicsBody.categoryBitMask = 0xffff0000;

SKSpriteNode *sprite2 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(20.0f, 10.0f)];
sprite2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sprite.size];
sprite2.physicsBody.collisionBitMask = 0x0000ffff;
sprite2.physicsBody.categoryBitMask = 0x0000ffff;

【讨论】:

    【解决方案2】:

    将蓝条创建为 2 个单独的对象,当“洞”不在附近但有预设孔时,它们之间的“孔大小”间隙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2011-01-22
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多