我正在尝试实现检测两个精灵之间的碰撞的功能,但仅在这些精灵的特定位置。例如,如果我有一个钩子和一条鱼,而游戏的目的是用钩子钓到一条鱼,那么只有钩子的尖端与鱼钩的嘴或前部(比如 10%)之间的碰撞。鱼应该很重要,但不是任何其他碰撞。有没有一种简单的内置方法来测试这个?如果没有,关于如何做的任何指导?
我有以下标准代码获取框架上的碰撞点,我在其中添加 CGPoint p = contact.contactPoint;
我从那里去哪里?
- (void)didBeginContact:(SKPhysicsContact *)contact
{
SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
if ((firstBody.categoryBitMask & hookCategory) != 0 &&
(secondBody.categoryBitMask & fishCategory) != 0)
{
CGPoint p = contact.contactPoint;
[self caught:(SKSpriteNode *) firstBody.node didCatchFish: (Fish *) secondBody.node];
}
}