【发布时间】:2017-01-08 19:32:41
【问题描述】:
我在 SKScene 中有两个不同的固定 SKPhysicsBody。两者之间的唯一区别是它们的 categoryBitMask。一个的 categoryBitMask 为 512,另一个为 1024。
static const u_int32_t kWallCategory = 0x1 << 9; //512
static const u_int32_t kStructureCategory = 0x1 << 10; //1024
在我的程序中,我有一个标准的联系人处理程序,从 -(void)didBeginContact:(SKPhysicsContact *)contact 开始调用:
-(void)handleContact:(SKPhysicsContact*)contact {
SKPhysicsBody *bodyA = contact.bodyA;
SKPhysicsBody *bodyB = contact.bodyB;
int type1 = contact.bodyA.categoryBitMask;
int type2 = contact.bodyB.categoryBitMask;
在我的程序中,我需要确定一个动态物体和两个固定物体之一之间的接触向量。为此,我访问了 SKPhysicsContact 的 contactNormal 属性
CGVector c = contact.contactNormal;
不过,我注意到接触矢量不一致,我确定这是因为有时 SKPhysicsContact 的 bodyA 是固定体,有时 bodyA 是动态体。
例如,当子弹(动态体)从左侧击中建筑物(固定体)时,我希望每次的接触向量都是(-1,0)。目前,接触向量有时是(-1,0)(左起),有时是(1,0)(右起),这都取决于contact.bodyA是哪个主体。
我的问题:假设所有其他条件都相同(物理属性等),什么决定了 SKPhysicsContact 中的 bodyA 和 bodyB 是什么?
【问题讨论】:
标签: objective-c skphysicsbody skphysicscontact