gpt4 book ai didi

ios - 跟踪类别的 SKNodes

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:59 24 4
gpt4 key购买 nike

我有一个函数可以将敌人添加到我的场景中,该函数会按时间间隔调用

我如何跟踪场景中的敌人数量以限制每个关卡中的敌人数量?

**在我的更新函数中**

CFTimeInterval timeSinceLastEnemy = currentTime - self.lastEnemyUpdateTime;
self.lastEnemyUpdateTime = currentTime;
if (timeSinceLastEnemy > 1) { // more than a second since last update
timeSinceLastEnemy = 1.0 / 60.0;
self.lastEnemyUpdateTime = currentTime;
}

[self spwanEnemyWithTime:timeSinceLastEnemy];

**定时器和添加敌人的方法**

- (void)spwanEnemyWithTime:(CFTimeInterval)timeSinceLast {

self.lastEnemySpawn += timeSinceLast;
if (self.lastEnemySpawn > 0.6) {
self.lastEnemySpawn = 0;
[self spawnEnemy];
}
}

-(void) spawnEnemy {

SKSpriteNode *enemy = [SKSpriteNode spriteNodeWithImageNamed: enemySprite];

int minX = 5;
int maxX = self.frame.size.width;
int rangeX = maxX - minX;
int actualX = (arc4random() % rangeX) + minX;

// Create the enemy slightly off-screen along the upper edge,

enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(enemy.size.height - 10 , enemy.size.width)];
enemy.physicsBody.dynamic = YES;
enemy.physicsBody.categoryBitMask = enemyCategory;
enemy.physicsBody.contactTestBitMask = bulletCategory;
enemy.physicsBody.collisionBitMask = 0;

// and along a random position along the X axis as calculated above
enemy.position = CGPointMake(actualX, self.frame.size.height + enemy.size.height);
[self addChild:enemy];
enemy.xScale = 0.2;
enemy.yScale = 0.2;
enemy.zPosition = 4;

// Create the actions
SKAction * actionMove = [SKAction moveToY:(0 - enemy.size.height) duration:4];
SKAction * actionMoveDone = [SKAction removeFromParent];
[enemy runAction:[SKAction sequence:@[actionMove, actionMoveDone]]];
}

最佳答案

我承认我无法理解你用双计时器做什么,所以我假设这部分工作如你所愿。对于敌人的数量,这难道不能像在 spawnEnemy 上增加一个计数器并在敌人从场景中移除时减少计数器一样简单吗?

你必须仔细检查我的 Obj-c,我已经有一段时间没有使用它了。

int enemyCount = 0;

-(void) spawnEnemy {

enemyCount += 1

...

// Create the actions
SKAction *actionMove = [SKAction moveToY:(0 - enemy.size.height) duration:4];
SKAction *actionMoveDone = [SKAction removeFromParent];
SKAction *decrementCount = [SKAction runBlock: ^(void) {
enemyCount -= 1;
}];

[enemy runAction:[SKAction sequence:@[actionMove, actionMoveDone, decrementCount]]];
}

仅供引用,您的方法“spwanEnemyWithTime”中有错字

关于ios - 跟踪类别的 SKNodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47302496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com