1

我有一个游戏,柯比将篮球射入网中。我遇到的问题是检测射门是否得分。我设置了物理调试的场景,所以所有的物理物体都是红色的。网中间的红色圆圈是我用来检测射门是否得分的身体。如果射门进入圆圈,则得分。问题是我没有办法让镜头穿过圆圈并仍然检测到碰撞。 场景

我尝试了这个,它将球在击中圆圈后立即设置为传感器,而在离开圆圈后立即设置为非传感器,让它通过但之后仍然撞击地面。问题是最初的碰撞仍然有效,所以球会反弹一点,通常最终会撞到圆圈两到三下。

- (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;
}
4

1 回答 1

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;
}
于 2014-06-06T07:59:41.857 回答