カービィがバスケットボールをネットに撃ち込むゲームがあります。私が抱えている問題は、ショットが得点したかどうかを検出することです。物理デバッグをオンにしてシーンをセットアップしたので、すべての物理ボディが赤くなりました。ネットの真ん中にある赤い円は、ショットが得点したかどうかを検出するために使用するボディです。ショットがサークルに入った場合、それは得点です。問題は、ショットが円を通過しても衝突を検出する方法がないことです。
私はこれを試しました。これは、ボールが円に当たるとすぐにセンサーになり、円を離れるとすぐに非センサーになり、ボールを通過させますが、その後は地面に当たります。問題は、最初の衝突がまだ有効であるため、ボールが少し跳ね上がり、通常は円に 2 ~ 3 回当たることです。
- (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;
}