使用SKSpriteNode实现单侧平台

时间:2013-11-15 14:41:47

标签: ios ios7 sprite-kit

我尝试使用SKSpriteNode实现单面平台。我正在进行的方法是在英雄在平台下时尝试切换collisionBitMask,并在结束时重新打开它。

我的平台物理主体配置如下:

platform.physicsBody.dynamic = NO;
platform.physicsBody.categoryBitMask = platformCategory;
platform.physicsBody.collisionBitMask = heroCategory;

我的英雄就是这样

hero.physicsBody.categoryBitMask = heroCategory;
hero.physicsBody.contactTestBitMask = enemyProjectileCategory|monsterCategory;
hero.physicsBody.collisionBitMask = groundCategory;

我有一个更新方法,在检查它的平台上的每个模拟步骤之前进行检查:

if (self.position.y < self.hero.position.y) {
    NSLog(@"setting collision to hero");
    self.physicsBody.collisionBitMask = heroCategory;
} else {
    NSLog(@"removing collision");
    self.physicsBody.collisionBitMask = 0;
}

我的类别如下:

typedef enum : uint8_t {
    friendlyProjectileCategory = 1,
    enemyProjectileCategory = 2,
    monsterCategory = 4,
    heroCategory = 8,
    groundCategory = 16,
    platformCategory = 32
} physicsCategories;

问题在于,当我的英雄跳过平台时(他正确地从底部穿过),我看到碰撞位掩码正确翻转,但随后他正好穿过它(应该碰撞),尽管我正在看到&#34;消除碰撞&#34;记录执行。

0 个答案:

没有答案