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];
}
我是 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];
}