我的spritekit游戏中有两个植物体正在发生碰撞,我很难让它们停下来。
我在下面发布他们的物理代码。 问题是当群体接触我的硬币时它推动它,不完全确定为什么,因为据我所知,我的敌人被告知只接触玩家而且我的硬币被告知只接触墙壁和玩家(纠正我,如果我错了)
(P.S我注释了用于硬币的collisionBitMask,因为当我不让我的硬币掉进我的墙壁时)
由于
1St sprite
enemy = [SKSpriteNode spriteNodeWithImageNamed:@"Swarm"];
enemy.physicsBody =
[SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
enemy.physicsBody.dynamic=NO;
enemy.name=@"Eagle";
enemy.physicsBody.categoryBitMask = PCFallersCategory;
// enemy.physicsBody.collisionBitMask =
// PCPlayerCategory;
enemy.physicsBody.contactTestBitMask = PCPlayerCategory;
enemy.physicsBody.restitution=0;
enemy.physicsBody.friction=0;
第二个精灵。
self.name = @"coin";
CGFloat minDiam = MIN(self.size.width, self.size.height);
minDiam = MAX(minDiam-8, 8);
self.physicsBody =
[SKPhysicsBody bodyWithCircleOfRadius:minDiam/2.0];
self.physicsBody.dynamic=YES;
self.physicsBody.restitution =0;
self.physicsBody.friction = 0;
self.physicsBody.linearDamping = 0;
self.physicsBody.categoryBitMask = PCCollectableCategotry;
//self.physicsBody.collisionBitMask =PCPlayerCategory;
self.physicsBody.contactTestBitMask = PCPlayerCategory|PCWallCategory;
答案 0 :(得分:2)
您需要将collisionBitMask显式设置为0。
enemy.physicsBody.collisionBitMask = 0;
当两个物理实体相互接触时,可能会发生碰撞。 该身体的碰撞面具与其他身体的类别进行比较 通过执行逻辑AND操作进行掩码。如果结果是 非零值,则此体受碰撞影响。每个身体 独立选择是否想要受到另一方的影响 身体。例如,您可以使用它来避免碰撞计算 这会对身体的速度产生微不足道的变化。
默认值为0xFFFFFFFF(设置所有位)。
这意味着默认情况下,SKPhysicsBody配置为与所有对象发生碰撞。