【发布时间】:2014-11-20 21:50:29
【问题描述】:
我正在尝试通过制作类似游戏的 Flappy Bird 的教程来学习 SpriteKit。在我的游戏版本中,管道不是管道,而是不规则形状的对象,不会填满它们绘制的整个矩形画布。然而,由于画布是矩形的,SpriteKit 会在另一个物体接触角落时检测碰撞,这在技术上是不可见的。我该如何纠正?
- (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 & pillerCategory) != 0 &&
(secondBody.categoryBitMask & flappyBirdCategory) != 0)
{
[self pillar:(SKSpriteNode *) firstBody.node didCollideWithBird:(SKSpriteNode *) secondBody.node];
}
else if ((firstBody.categoryBitMask & flappyBirdCategory) != 0 &&
(secondBody.categoryBitMask & bottomBackgroundCategory) != 0)
{
[self flappyBird:(SKSpriteNode *)firstBody.node didCollideWithBottomScoller:(SKSpriteNode *)secondBody.node];
}
}
我只有在实际接触到图片时才检测到碰撞。而不是填满所有矩形画布的管道:
【问题讨论】:
标签: ios canvas png sprite-kit collision-detection