ios - 在一定范围内在舞台上添加敌人

标签 ios xcode cocos2d-iphone

我正在制作一个应用程序只是为了测试一些代码。有一艘船正在射击敌人。这些敌人是从屏幕顶部下来的,他们是用这段代码添加的(之所以有 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/

相关文章:

ios - UINavigationViewController - 每个后续 VC 上的右键不同吗?

iphone - Cocos2D 在 iPhone 上立即崩溃,但在模拟器中没有

ios - 如何仅使用Cocos2d旋转横向

iphone - 使用pushViewController到TableViewController时出现断言错误

ios - 使用 FBSDKShareLinkContent 向 Facebook 4.x 添加标题

ios - cancelAllOperations 不适用于 [NSOperationQueue mainQueue]

ios - 使用 Storyboard xcode 6 在 vi​​ewController 中调整内容

ios - 无需手动选择分发证书?

xcode - MacOS 应用程序无法在 Xcode 模拟器上运行

ios - Cocos2d 和 SpriteBuilder 中的 Admob