我是Swift和SpriteKit的初学者,我正在开发基本游戏。我使用2个SKTexture图像创建了一个Sprite游戏角色(Sapceman)。当触摸屏幕时,Sprite图像从一个纹理图像变为另一个(Jet Pack Fires),并且Sprite在屏幕上移动。我想设置一个碰撞检测(使用Alien Spite)将它们从屏幕上移除但仅在触摸屏幕时显示第二个纹理图像并且仅用于精灵的底部(即当人触摸屏幕时)并且JetPack被解雇我希望火部分“杀死”外星人)。感谢是否有人可以就此提出任何建议
答案 0 :(得分:0)
试试此代码
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];
}