2014-02-11 3 views
0

в моей игре Я добавляю противников на сцену каждую секунду, мне нужно описать конкретное расстояние между проницаемым объектом, которое мой главный персонаж перемещает через этого врага, вот мои коды, которые добавляют враг сцены:SpriteKit - Как добавить объекты с определенным расстоянием

- (void)createEnemy { 

     int GoOrNot = [self getRandomNumberBetween:0 to:1]; 

     if(GoOrNot == 1){ 

     int randomEnemy = [self getRandomNumberBetween:0 to:1]; 

     if(randomEnemy == 0) 

     enemy =  [[SKSpriteNode alloc]initWithImageNamed:@"car.png"]; 

     else 

     enemy = [[SKSpriteNode alloc]initWithImageNamed:@"block.png"]; 


      int xPostion = [self placeRandomObject] ; 
      int yPostion = 1150; 

      enemy.position = CGPointMake(xPostion, yPostion); 

      enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:enemy.size]; 
      enemy.name = @"enemy"; 
      enemy.physicsBody.categoryBitMask = enemyCategory; 
      enemy.physicsBody.contactTestBitMask = carCategory; 
      enemy.physicsBody.collisionBitMask = 0; 
      enemy.physicsBody.dynamic = YES; 
      enemy.physicsBody.usesPreciseCollisionDetection = YES; 

      [self addChild:enemy]; 



      SKAction *wait = [SKAction waitForDuration:.20]; 
      SKAction *move = [SKAction moveToY:self.scene.frame.origin.y-10 duration:enemySpeed]; 
      SKAction *remove = [SKAction removeFromParent]; 
      SKAction *runAction = [SKAction sequence:@[wait,move , remove]]; 
      [enemy runAction:[SKAction repeatActionForever:runAction]]; 
     } 

} 

добавления противника:

- (void)addEnemies { 


    SKAction *wait = [SKAction waitForDuration:.55]; 
    SKAction *callEnemies = [SKAction runBlock:^{ [self createEnemy];}]; 

    updateEnimies = [SKAction sequence:@[wait,callEnemies]]; 

    [self runAction:[SKAction repeatActionForever:updateEnimies] withKey:@"addEnemy"]; 



} 

ответ

1

Вы можете создать новую переменную для хранения последней позиции предыдущего противника.

CGPoint positionOfLastEnemy; 

при создании нового врага назначить позицию созданного врага этой переменной:

positionOfLastEnemy = CGPointMake(xPostion, yPostion); 

, если вам нужно обновить вражеские позиции вы можете сделать это в методе обнаружения столкновений.

После этого просто используйте переменную positionOfLastEnemy, чтобы рассчитать требуемое расстояние.

Другой способ заключается в добавлении переменного для последнего врага

SKSpriteNode *lastEnemy; 

в вашем методе createEnemy сохранить ссылки на созданный Вами противник.

lastEnemy = enemy; 

И если вам нужно расстояние от последнего врага просто использовать

lastEnemy.position 
+0

кажется, это сработало! благодаря –

Смежные вопросы