如何在没有碰撞的情况下检测碰撞生效cocos2d

时间:2014-06-06 06:18:30

标签: ios cocos2d-iphone spritebuilder

我有一个游戏,kirby将篮球射入网中。我遇到的问题是检测是否有射门得分。我在物理调试的基础上设置了场景,所以所有的物理机构都是红色的。网中间的红色圆圈是我用来检测镜头是否得分的身体。如果一个镜头进入圆圈,那么它已经得分。问题是我没有办法让镜头通过圆圈并仍能检测到碰撞。 Scene http://i60.tinypic.com/aep6ie.png

我尝试了这个,它将球一旦击中圆圈就将其设置为传感器,并且一旦它离开圆圈就将其设置为非传感器,让它通过但后来仍然击中地面。问题是初始碰撞仍然有效,所以球反弹一点,通常最终击中圆圈两到三次。

- (void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair goal:(CCNode *)goal wildcard:(CCNode *)ball
{
    ball.physicsBody.sensor = YES;
}

- (void)ccPhysicsCollisionSeparate:(CCPhysicsCollisionPair *)pair goal:(CCNode *)goal wildcard:(CCNode *)ball
{
    ball.physicsBody.sensor = NO;
}

1 个答案:

答案 0 :(得分:1)

如果使用其他两个碰撞委托方法,这很简单。在每一个中你可以确定是否应该发生碰撞,如果不是,则返回NO告诉Chipmunk忽略碰撞,让身体相互穿过。

- (BOOL)ccPhysicsCollisionPreSolve:(CCPhysicsCollisionPair *)pair 
                              goal:(CCNode *)goal
                              ball:(CCNode *)ball
{
    return NO;
}

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair
                           goal:(CCNode *)goal
                           ball:(CCNode *)ball
{
    return NO;
}