Ios 计时器的替代生成方法
我正在做一个视差滚动地面的反应游戏。我的敌人产卵计时器位于didMoveToView中,现在是我的问题。游戏在玩的时候会加速,但是我的繁殖方法保持不变,所以如果敌人以同样的频率繁殖,那就有点无聊了。 代码如下:Ios 计时器的替代生成方法,ios,objective-c,sprite-kit,2d,2d-games,Ios,Objective C,Sprite Kit,2d,2d Games,我正在做一个视差滚动地面的反应游戏。我的敌人产卵计时器位于didMoveToView中,现在是我的问题。游戏在玩的时候会加速,但是我的繁殖方法保持不变,所以如果敌人以同样的频率繁殖,那就有点无聊了。 代码如下: //inside the didMoveToView SKAction *addEnemRand = [SKAction performSelector:@selector(addRandomEnemy) onTarget:self]; SKAction *addEnemRand
//inside the didMoveToView
SKAction *addEnemRand = [SKAction performSelector:@selector(addRandomEnemy) onTarget:self];
SKAction *addEnemRandWait = [SKAction waitForDuration:2];
SKAction *addEnemRandAll = [SKAction sequence:@[addEnemRandWait, addEnemRand]];
SKAction *addEnemRandAllForever = [SKAction repeatActionForever:addEnemRandAll];
[self runAction:addEnemRandAllForever];
有人知道如何以适当的方式繁殖敌人吗
这是移动地面的代码(有两个)。也许可以将产卵速度与地面位置联系起来
-(void)addGround:(SKSpriteNode *)sprite withSpeed:(int)speed {
if (ground.position.x+ground.frame.size.width/2 < 0) {
ground.position = CGPointMake(self.size.width+ground.size.width/2, ground.size.height/2+1);
}
// movement
ground.position = CGPointMake(ground.position.x-speed, ground.position.y);
}
-(void)addGround:(SKSpriteNode*)带速度的精灵:(int)速度{
if(接地位置x+接地框架尺寸宽度/2<0){
ground.position=CGPointMake(self.size.width+ground.size.width/2,ground.size.height/2+1);
}
//运动
ground.position=CGPointMake(ground.position.x-速度,ground.position.y);
}
谢谢你的帮助!(请填写目标c中的代码)
编辑:看来GamePlayKit可以帮助我,但我不知道如何用它实现繁殖方法。我在网上读了一些教程,但对我没有帮助。有人能帮帮我吗?我认为做这件事的方法值得研究
看看这里,你实施了一个“基本规则系统结合另一个随机分布来处理敌人的重生行为”你可以使用地面位置来管理繁殖时间,或者使用时间,因为等级已经开始。这是我在simular任务更新方法中的代码,使用经过的时间 initWithSize方法中的属性:
self.lastUpdateTimeInterval = 0;
self.timeSinceEnemyAdded = 0;
self.addEnemyTimeInterval = 1.5;
self.totalGameTime = 0;
更新方法:
-(void)update:(NSTimeInterval)currentTime {
if (self.lastUpdateTimeInterval ) {
self.timeSinceEnemyAdded += currentTime - self.lastUpdateTimeInterval;
self.totalGameTime += currentTime - self.lastUpdateTimeInterval;
}
if (self.timeSinceEnemyAdded > self.addEnemyTimeInterval && !self.gameOver) {
[self addEnemy];
self.timeSinceEnemyAdded = 0;
}
self.lastUpdateTimeInterval = currentTime;
if (self.totalGameTime > 480) {
self.addEnemyTimeInterval = 0.5;
self.minSpeed = -160;
} else if (self.totalGameTime > 240) {
self.addEnemyTimeInterval = 0.65;
self.minSpeed = -150;
} else {
//Something else
}
}
如果需要,您可以只管理groundlenght属性我正在寻找一种没有时间的繁殖方法。你能给我一个使用地面位置的产卵方法的例子吗?在你的addGround方法中,将“地面”存储在私有属性“self.ground.position=CGPointMake…”中,并在更新方法中使用该属性,在更新方法中,输入时间,检查“if(self.ground.position>someNumber),然后{self.speed=some speed}”(您还需要使速度可变-私有属性,以进行更改)我可以说如果(self.ground.position>someNumber)然后产卵敌人?它可以工作,但它不会停止产卵,那么,我如何调节产卵?我的意思是,它如何只能产卵一次,然后再等待?然后尝试使用代码,这是我之前发布的,你只需要2个first if语句,在那里你计算时间,因为最后一个敌人被添加。这绝对是一个好的阅读,但没有帮助例如,关于产卵与地面运动相关的问题。