1

我在类的方法中添加了一些方便的方法来SKPhysicsBody更容易地处理它们。didBeginContactSKPhysicsContactDelegate

@interface SKPhysicsBody (MyCategory)
-(void)convenience;
@end

看来委托使用不同的类型,然后记录在案。当我尝试在 didBeginContact 中使用这种便捷方法时,出现异常。

尝试以下测试代码时

-(void)didBeginContact:(SKPhysicsContact *)contact {
    NSLog(@"%@, %d", [contact.bodyA class], [contact.bodyA isKindOfClass:[SKPhysicsBody class]]);
}

它会记录

PKPhysicsBody, 0

PKPhysicsBody 是(私有)PhysicsKit 框架的一部分。

虽然SKPhysicsContact文档明确指出

bodyA
The first body in the contact. (read-only)
@property(readonly, nonatomic) SKPhysicsBody *bodyA

有没有办法解决这个问题,所以我仍然可以使用 SKPhysicsBody 类类别?还是我误解了某些东西,这是预期的行为吗?

4

1 回答 1

0

Well PhysicsBody 可能使用了在 Apple 框架中广泛使用的 Class Cluster 方法。您应该使用内置的接触面罩来识别您的物理实体。就像文档中解释的那样:

categoryBitMask 定义此物理体所属类别的掩码。

于 2014-05-07T14:47:07.007 回答