得分++增加4分,而不是1分

时间:2014-07-23 17:35:38

标签: objective-c sprite-kit

出于某种原因,在发生碰撞后,我的游戏中的分数上升了4,当我只使用score++看我的情况时,它应该上升1:

- (void)didBeginContact:(SKPhysicsContact *)contact
{
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
    if (collision == (playerCategory | gainCategory)) {
        score++;
        scorelabel.text = [NSString stringWithFormat:@"%lu",(unsigned long)score];
        [contact.bodyB.node removeFromParent];
    }
}

它之前正在运作,但刚刚开始这样做,我不知道为什么。导致分数上升四而不是一分的原因是什么?我可以根据要求提供更多代码。

3 个答案:

答案 0 :(得分:0)

您的方法似乎可能被多次调用。在方法中设置断点或NSLog调用以查看它被调用的次数。或者您的得分参数可能会在代码中的其他位置更新。

答案 1 :(得分:0)

赔率是,didBeginContact确实被调用了4次(如前所述,你应该调试以确认这一点)。这通常是由两个物体相互“放牧”引起的。一种解决方案是在与身体第一次碰撞后使用一种“超时”。您还应该查看您的归还价值。还有一个小小的注释,突然发生的原因是帧率,特别是如果你使用帧率独立的运动

答案 2 :(得分:0)

NSInteger是原子类型,不是对象类型。你已经声明了一个指向它的指针。递增指针时,它会上升sizeof(type)。您必须在32位计算机上进行测试。

建议:删除星号,以免声明指针。