两个精灵之间的碰撞



>我试图在两个精灵之间发生碰撞,但不起作用,他们击中并且没有检测到接触。

在游戏场景中。

@interface GameScene : SKScene <SKPhysicsContactDelegate>{

*

在游戏场景中

static const uint32_t ballCategory = 1<<0;
static const uint32_t obs1Category = 1<<1;

*

ball = [SKSpriteNode spriteNodeWithImageNamed:@"ball_cross"];
ball.position = CGPointMake(bx,by);
ball.name = @"ball";
ball.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ball.size];
ball.physicsBody.dynamic = YES;
ball.physicsBody.categoryBitMask = ballCategory;
ball.physicsBody.collisionBitMask = obs1Category;
ball.physicsBody.contactTestBitMask = obs1Category;

*

obs1 = [SKSpriteNode spriteNodeWithImageNamed:@"obs1"];
obs1.position = obs1XY;
obs1.name = @"obs1";
obs1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:obs1.size];
obs1.physicsBody.categoryBitMask = obs1Category;
obs1.physicsBody.contactTestBitMask = ballCategory;
obs1.physicsBody.collisionBitMask = ballCategory;
obs1.physicsBody.dynamic = YES;

*

-(void)didBeginContact:(SKPhysicsContact *)contact{
   NSLog(@"hit");
}

在碰撞位掩码和接触测试位掩码中,您需要添加要接收通知的两个主体。

即:

obs1.physicsBody.categoryBitMask = obs1Category;
obs1.physicsBody.contactTestBitMask = ballCategory;
obs1.physicsBody.collisionBitMask = ballCategory || obs1Category;
ball.physicsBody.categoryBitMask = ballCategory;
ball.physicsBody.collisionBitMask = obs1Category || ballCategory;
ball.physicsBody.contactTestBitMask = obs1Category;

当接触位掩码与球和球体之间的组合匹配时,将生成通知。

我希望这对伴侣有所帮助!

最新更新