我在 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 是什么?