gpt4 book ai didi

ios - SpriteKit 物理 : Ignore when on different z plane

转载 作者:行者123 更新时间:2023-11-29 12:59:57 30 4
gpt4 key购买 nike

使用 SpriteKit,是否可以让两个节点相互碰撞,但是当引入另一个节点时,物理原理会发生变化吗?

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

因此,包含一个 Player(橙色圆圈)和一个 Object(蓝色矩形)的场景:

enter image description here

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

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

enter image description here

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

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

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

谢谢!

最佳答案

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

如果你想让你的球与物体碰撞,而不是物体上的某个洞,你可能想把你的物体分成两 block ,中间有一个实际的洞。将洞 Sprite 的 categoryBitMaskcollisionBitMask 设置为与物体和球的完全不同。

// 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;

关于ios - SpriteKit 物理 : Ignore when on different z plane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037309/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com