2014-02-11 2 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 변수를 사용하여 필요한 거리를 계산하십시오.

다른 방법은 생성 적 참조 저장 마지막으로 적에게 createEnemy 방법에

SKSpriteNode *lastEnemy; 

를 개최 변수를 추가하는 것입니다.

lastEnemy = enemy; 

그리고 마지막 원수의 거리를 필요로하는 경우 단지

lastEnemy.position 
+0

을 사용 그것 일 것 같다! 감사 –

관련 문제