我正在制作一个应用程序只是为了测试一些代码。有一艘船正在射击敌人。这些敌人是从屏幕顶部下来的,他们是用这段代码添加的(之所以有 4 个不同的敌人,是因为它们都有不同的行为)
-(void) addEnemy {
int randomX = arc4random() % screenWidth;
Enemy* anEnemy;
int diceRoll = arc4random() % 4;
if (diceRoll == 0) {
anEnemy = [Enemy createEnemy:@"enemy1" framesToAnimate:24];
} else if (diceRoll == 1) {
anEnemy = [Enemy createEnemy:@"enemy2" framesToAnimate:17];
} else if (diceRoll == 2) {
anEnemy = [Enemy createEnemy:@"enemy3" framesToAnimate:14];
} else if (diceRoll == 3) {
anEnemy = [Enemy createEnemy:@"enemy4" framesToAnimate:24];
}
[self addChild:anEnemy z:depthLevelBelowBullet];
anEnemy.position = ccp ( randomX , screenHeight + 200);
numberOfEnemiesOnstage ++;
}
敌人被添加了一个随机的 x 值,这意味着敌人有时有一半在屏幕之外。像这样:
如何限制屏幕两侧的 x 值,以免发生这种情况?
最佳答案
在计算随机 x 位置时,您没有考虑图像宽度。您必须在创建敌人对象后移动 randomX 声明和初始化,以便正确设置 textureRect
属性。
int offset = (int)[Enemy textureRect].size.width / 2;
int randomX = (arc4random() % (screenWidth - (2 * offset))) + offset;
关于ios - 在一定范围内在舞台上添加敌人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177267/