Sprite kit 精灵-产生一波又一波的怪物

Sprite kit 精灵-产生一波又一波的怪物,sprite-kit,Sprite Kit,我正在制作一个简单的赛车游戏,在这个游戏中,怪物在纵向模式下从5条车道中的3条随机产生 -(void)addEnemy { SKSpriteNode *Enemy; Enemy = [SKSpriteNode spriteNodeWithImageNamed:@"Enemy1"]; [Enemy setScale:.65]; Enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Enemy.size]; Enemy.physic

我正在制作一个简单的赛车游戏,在这个游戏中,怪物在纵向模式下从5条车道中的3条随机产生

 -(void)addEnemy
{
SKSpriteNode *Enemy;
Enemy = [SKSpriteNode spriteNodeWithImageNamed:@"Enemy1"];
[Enemy setScale:.65];

Enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Enemy.size];
Enemy.physicsBody.categoryBitMask = obstacleCategory;
Enemy.physicsBody.dynamic = YES;
Enemy.zPosition = 2;
Enemy.physicsBody.contactTestBitMask = TurtleCategory;
Enemy.physicsBody.collisionBitMask = 0;
Enemy.physicsBody.usesPreciseCollisionDetection = YES;
Enemy.name = @"Enemy";


//selecting random y position for Enemy

int r = (arc4random() % 5) ;

Enemy.position = CGPointMake(48+r*56,self.frame.size.height);

[self addChild:Enemy];
SKAction *actionMove =
[SKAction moveTo:CGPointMake(Enemy.position.x,-80)
        duration:1.43];
[Enemy runAction:actionMove];

SKSpriteNode *Enemy2;
Enemy2 = [SKSpriteNode spriteNodeWithImageNamed:@"Enemy1"];
[Enemy2 setScale:.65];

//Adding SpriteKit physicsBody for collision detection
Enemy2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Enemy.size];
Enemy2.physicsBody.categoryBitMask = obstacleCategory;
Enemy2.physicsBody.dynamic = YES;
Enemy2.zPosition = 2;
Enemy2.physicsBody.contactTestBitMask = TurtleCategory;
Enemy2.physicsBody.collisionBitMask = 0;
Enemy2.physicsBody.usesPreciseCollisionDetection = YES;
Enemy2.name = @"Enemy2";


//selecting random y position for Enemy

int r2 = (arc4random() % 5) ;

Enemy2.position = CGPointMake(48+r2*56,self.frame.size.height);

[self addChild:Enemy2];
SKAction *actionMove2 =
[SKAction moveTo:CGPointMake(Enemy2.position.x,-80)
        duration:1.43];
[Enemy2 runAction:actionMove2];

SKSpriteNode *Enemy1;
Enemy1 = [SKSpriteNode spriteNodeWithImageNamed:@"boss1"];
[Enemy1 setScale:.65];

//Adding SpriteKit physicsBody for collision detection
Enemy1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Enemy1.size];
Enemy1.physicsBody.categoryBitMask = obstacleCategory;
Enemy1.physicsBody.dynamic = YES;
Enemy1.zPosition =2;
Enemy1.physicsBody.contactTestBitMask = TurtleCategory;
Enemy1.physicsBody.collisionBitMask = 0;
Enemy1.physicsBody.usesPreciseCollisionDetection = YES;
Enemy1.name = @"Enemy1";


int r1 = (arc4random() % 5) ;

Enemy1.position = CGPointMake(48+r1*56,self.frame.size.height);

[self addChild:Enemy1];

SKAction *actionMove1 =
[SKAction moveTo:CGPointMake(Enemy1.position.x,-80)
        duration:1.43];
[Enemy1 runAction:actionMove1];
然而,这段代码的一个问题是怪物有时会在彼此的上面繁殖。有更好的方法吗? 谢谢

我想这段代码是从raywenderlich的教程中找到的

你能做的就是打电话

 CGFloat r1 = [self randomValueBetween:0 andValue:3];
 CGFloat r2 = [self randomValueBetween:3 andValue:6]; etc
这可能会为您提供不同的值,您可以将其用作偏移量

 CGFloat r1 = [self randomValueBetween:0 andValue:3];
 CGFloat r2 = [self randomValueBetween:3 andValue:6]; etc