Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何检测碰撞而不使碰撞生效cocos2d_Ios_Cocos2d Iphone_Spritebuilder - Fatal编程技术网

Ios 如何检测碰撞而不使碰撞生效cocos2d

Ios 如何检测碰撞而不使碰撞生效cocos2d,ios,cocos2d-iphone,spritebuilder,Ios,Cocos2d Iphone,Spritebuilder,我有一个游戏,科比将篮球射入网中。我遇到的问题是检测投篮是否得分。我在物理调试打开的情况下设置了场景,所以所有物理实体都是红色的。网中的红色圆圈是我用来检测投篮得分的物体。如果射门进入圆圈,那么它就得分了。问题是,我没有办法让镜头穿过圆圈,仍然可以检测到碰撞。 我试过这个方法,当球击中圆圈时,它会被设置为传感器,当球离开圆圈时,它会被设置为非传感器,让球通过,但之后仍然会撞到地面。问题是初始碰撞仍然有效,因此球会反弹一点,通常会击中圆圈两到三次 - (void)ccPhysicsCollisi

我有一个游戏,科比将篮球射入网中。我遇到的问题是检测投篮是否得分。我在物理调试打开的情况下设置了场景,所以所有物理实体都是红色的。网中的红色圆圈是我用来检测投篮得分的物体。如果射门进入圆圈,那么它就得分了。问题是,我没有办法让镜头穿过圆圈,仍然可以检测到碰撞。

我试过这个方法,当球击中圆圈时,它会被设置为传感器,当球离开圆圈时,它会被设置为非传感器,让球通过,但之后仍然会撞到地面。问题是初始碰撞仍然有效,因此球会反弹一点,通常会击中圆圈两到三次

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

如果使用其他两种碰撞委托方法,则非常简单。在每一次碰撞中,你都可以确定是否应该发生碰撞,如果没有,则返回“否”,告诉花栗鼠忽略碰撞,允许身体彼此通过

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

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

工作得很有魅力:D