【问题标题】:How to detect collision without having collision take effect cocos2dcocos2d如何在不发生碰撞的情况下检测碰撞
【发布时间】:2014-06-06 06:18:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios cocos2d-iphone spritebuilder


    【解决方案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;
    }
    

    【讨论】:

    • 像魅力一样工作:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多