gpt4 book ai didi

ios - SpriteKit physicsBody 效果丢失

转载 作者:行者123 更新时间:2023-11-29 12:50:49 26 4
gpt4 key购买 nike

首先我添加了

skView.showsPhysics = YES;

查看物理 body 电路。

但是

我有失去物理效果的问题 O_o...我有一个受重力影响并掉落的球。

// Ball     
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.size.height/2];
self.physicsBody.categoryBitMask = ballCategory;
self.physicsBody.contactTestBitMask = bottomCategory;

我还创建了底部边缘的实体来获取碰撞消息:

// Bottom edge 
CGRect bottomRect = CGRectMake(self.frame.origin.x, self.frame.origin.y + 25, self.frame.size.width, 10);
SKNode* bottom = [SKNode node];
bottom.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:bottomRect];
[self addChild:bottom];

在我将 bitMask 添加到底部边缘之前它们正确地相互交互

bottom.physicsBody.categoryBitMask = bottomCategory;
bottom.physicsBody.collisionBitMask = ballCategory;

面具:

static const uint32_t ballCategory  = 0x1 << 0;  // 00000000000000000000000000000001
static const uint32_t bottomCategory = 0x1 << 1; // 00000000000000000000000000000010

它停止了工作。嗯……

我注释掉了将掩码分配给底部边缘 - 它有效。然后我将另一个分配给底部边缘 - 球 mask - 它再次不起作用。

我想,我在文档中遗漏了一些东西,但现在我找不到它发生的原因。

enter image description here

最佳答案

bottom.physicsBody.categoryBitMask = bottomCategory;

这使得 bottom 仅与 contactBitMask 包含 bottomCategory 位的物体接触/碰撞。

因此,如果您将此类别添加到您的球中,它们应该再次与底部碰撞:

ball.physicsBody.contactTestBitMask = ballCategory | bottomCategory;

有关更多详细信息,请参阅 Box2D manual 第 7.2 章 - 过滤

关于ios - SpriteKit physicsBody 效果丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486939/

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