gpt4 book ai didi

ios - Sprite Kit - 检测接触

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:25 26 4
gpt4 key购买 nike

我有两个 Sprite 节点:

-(void)createPlayer {
SKSpriteNode *player = [SKSpriteNode node];

player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
player.physicsBody.categoryBitMask = playerCategory;
player.physicsBody.contactTestBitMask = enemyCategory;

player.position = CGPointMake(100, 160);
player.name = @"player";
player.zPosition = 100;

[self addChild:player];
}

-(void)createEnemy {
SKSpriteNode *enemy = [SKSpriteNode node];

enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size];
enemy.physicsBody.categoryBitMask = enemyCategory;
enemy.physicsBody.contactTestBitMask = playerCategory;

enemy.position = CGPointMake(300, 160);
enemy.name = @"player";
enemy.zPosition = 100;

[self addChild:enemy];
}

以及 MyScene.h 中的以下内容

static const uint32_t playerCategory =  0x1 << 0;
static const uint32_t enemyCategory = 0x1 << 1;

我如何检测他们是否进行了联系,以便我可以根据他们的联系添加操作?

最佳答案

您的碰撞检测需要委托(delegate)方法。

在您的 MyScene.h 中,您的代码应如下所示:

@interface MyScene : SKScene <SKPhysicsContactDelegate>

在您的 MyScene.m 中,将此添加到您的 initWithSize 中:

self.physicsWorld.contactDelegate = self;

现在你需要实现委托(delegate)方法didBeginContact:

- (void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

if (collision == (playerCategory | enemyCategory)) {
// Do your stuff
}
}

关于ios - Sprite Kit - 检测接触,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com