Ios SpriteKit-如何添加具有特定距离的对象

Ios SpriteKit-如何添加具有特定距离的对象,ios,iphone,objective-c,xcode4,sprite-kit,Ios,Iphone,Objective C,Xcode4,Sprite Kit,在我的游戏中,我每秒都会在场景中添加敌人,我需要描述我的主要角色穿过这些敌人的透水对象之间的特定距离,以下是我在场景中添加敌人的代码: - (void)createEnemy { int GoOrNot = [self getRandomNumberBetween:0 to:1]; if(GoOrNot == 1){ int randomEnemy = [self getRandomNumberBetween:0 to:1];

在我的游戏中,我每秒都会在场景中添加敌人,我需要描述我的主要角色穿过这些敌人的透水对象之间的特定距离,以下是我在场景中添加敌人的代码:

- (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"];



}

您可以创建新的变量来保持上一个敌人的最后位置

CGPoint positionOfLastEnemy;
创建新敌人时,将创建敌人的位置分配给此变量:

positionOfLastEnemy = CGPointMake(xPostion, yPostion);
如果你需要更新敌人的位置,你可以在你的碰撞检测方法中这样做

之后,只需使用positionOfLastEnemy变量来计算所需的距离

另一种方法是添加变量来保存最后一个敌人

SKSpriteNode *lastEnemy;
在CreateEquire方法中,保存对已创建敌人的引用

lastEnemy = enemy;
如果你需要最后一个敌人的距离,就使用

lastEnemy.position