联系仍在进行时,请联系破坏tilemap

时间:2014-04-29 20:14:47

标签: ios objective-c sprite-kit

我有一个问题,我真的很感激帮助。我正在开发一个用平铺设计的小游戏。我的问题是这样的,比如说我有一个由16&16 images制作的平铺地图平台。所以一个大约这个大小 | | 和它们中的5个将是一样的 | || || || || |。 现在,我有一个精灵穿过它,当我向左或向右移动时,我的联系人被垃圾邮件发送。请查看以下NSLog的代码和复制粘贴。(NB请参阅时间)

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

      NSLog(@"Can jummp");
      onGround=YES;
  }
}
- (void) didEndContact:(SKPhysicsContact *)contact {
  uint32_t contactTest = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
  if (contactTest == (FLOOR| PLAYER)) {
    // if (contactTest != (floor | player)) {

    NSLog(@"dont jumps");
    onGround = NO;
    /*
    SKPhysicsBody *other = (contact.bodyA.categoryBitMask == PCPlayerCategory ?
                            contact.bodyB : contact.bodyA);
    if (other.categoryBitMask & _player.physicsBody.collisionBitMask) {
      // 3
      NSLog(@"dont jumps");
      onGround=NO;
         }
    */
  }
}

NSLog:

2014-04-29 19:09:53.111 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.142 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.159 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.192 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.227 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.260 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.293 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.327 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.343 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.377 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.410 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.460 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.710 Explorer[4517:a0b] dont jumps

按住左箭头并向左移动我的角色时产生NSLog。因为这个“onGround”被设置为“NO”,当它应该是“Yes”时,它会干扰我的角色的跳跃。无论如何,当我的播放器实际离开平台而不是16*16 image时,我可以编辑我的结束联系人。 - 谢谢你

平铺定义

  if([map propertiesForGid:tileGid][@"floor"]) {
    //4
    SKSpriteNode *tile = [layer tileAtCoord:coord];
    tile.name=@"floor";
    tile.physicsBody =
    [SKPhysicsBody bodyWithRectangleOfSize:tile.size];
    tile.physicsBody.categoryBitMask = FLOOR;
    tile.physicsBody.collisionBitMask =
    PLAYER;
      tile.physicsBody.contactTestBitMask=PLAYER;
    tile.physicsBody.dynamic = NO;
    tile.physicsBody.friction = 0;
      tile.physicsBody.restitution=0;
   }

![在此处输入图片说明] [1]

0 个答案:

没有答案