Spritekit - 触摸开始时的碰撞方法

Spritekit - Collision approach when touch begins

我是 Swift 和 SpriteKit 的初学者,我正在开发一款基础游戏。我使用 2 个 SKTexture 图像创建了一个 Sprite 游戏角色 (Sapceman)。当触摸屏幕时,Sprite 图像从一个纹理图像变为另一个(Jet Pack Fires)并且 Sprite 在屏幕上移动。我想设置一个碰撞检测(使用 Alien Spite),将它们从屏幕上移除,但仅当触摸屏幕并显示第二个纹理图像时,并且仅针对精灵的底部(即当人触摸屏幕时)并且 JetPack 被解雇了我想要 "kill" 外星人的火力部分)。如果有人可以对此提出任何建议,我们将不胜感激

试试这个代码

 static const uint32_t fireBallCategory   = 0x1;     
 static const uint32_t alienCategory  = 0x1 << 1;

在添加火球和外星人方法中添加这个,

   fireBall.physicsBody.categoryBitMask = fireBallCategory;         
  alien.physicsBody.categoryBitMask = alienCategory;
  fireBall.physicsBody.contactTestBitMask = alienCategory;

通过这样做,您将在火球和外星人相遇时收到通知。因此,在此之后,您必须添加逻辑以在委托方法中隐藏外星人。所以首先将自己设置为联系人代表。在 -(id)initWithSize:(CGSize)size 方法中添加这一行。

 self.physicsWorld.contactDelegate = self;

按如下方式实现联系人委托,

-(void)didBeginContact:(SKPhysicsContact *)contact
{
    SKPhysicsBody *notFireBall;

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask){
    notFireBall = contact.bodyB;
} else {
    notFireBall = contact.bodyA;
}
[notFireBall removeFromParent];      
}