我正在创建一个需要使用大量碰撞检测的游戏,而我今天才了解它。
现在我有两个SKSpriteNodes,但一个是SKNode. SKSpriteNode调用没有父级的精灵,调用有父级character的精灵buildingStructure。
现在character的类别是static const uint32_t playerCategory = 0x1 << 20;和buildingStructure的类别是_buildingStructureCategory = 0x1 << 0;。buildingStructure的类别map.m通过 a设置在另一个类中@property。
变量正确地传递给另一个名为main.m的类(这是character设置类别的地方)。我character用一种方法创建,设置他的物理体、位置等。
character的属性
character.name = @"character";
character.size = CGSizeMake(250, 400);
character.zPosition = 500;
character.position = CGPointMake(self.scene.size.width/2, self.scene.size.height/2+200);
character.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:character.size];
character.physicsBody.restitution = 0;
character.physicsBody.density = 0.1;
character.physicsBody.allowsRotation = NO;
character.physicsBody.categoryBitMask = playerCategory;
character.physicsBody.collisionBitMask = categoryBitManager.buildingStructureCategory;
buildingStructure的属性
buildingStructure.name = @"buildingStructure";
buildingStructure.position = CGPointMake(building.position.x, building.position.y);
buildingStructure.size = CGSizeMake(500, 400);
buildingStructure.physicsBody.dynamic = NO;
buildingStructure.physicsBody.categoryBitMask = _buildingStructureCategory;
另一方面buildingStructure,没有设置physicsBody,因为我想character通过,buildingStructure但我也希望它检测何时character“处于顶部”buildingStructure以执行操作。
由于buildingStructure没有定义physicsBody这是导致didBeginContact:contact无法识别碰撞接触的原因吗?