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