SpriteKit碰撞检测与透明图像
问题描述:
我想学习SpriteKit通过制作一个像飞镖一样的游戏教程。在我的游戏版本中,管道不是管道,并且是不规则形状的物体,它们不会填满它们被绘制的整个矩形画布。但是,由于画布是矩形的,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 8中,您可以基于纹理的Alpha通道创建一个物理实体。 (请参阅bodyWithTexture
。)这会为您提供确切的形状,但性能成本很高。
为了在碰撞准确性和性能之间取得平衡,或者如果您还支持iOS 7,您可以改为从路径创建物理主体,或者以近似所需形状的方式组合多个较小的物理主体。
链接已损坏。 – 2015-07-05 14:46:15
感谢您通知。链接已更新。 – 2015-07-05 21:46:24