我有一艘船,我想让它每1秒射一次。所以这就是我做的,
@property (nonatomic, assign) float lastDamageTime;
并在更新方法中
if (CACurrentMediaTime - self.lastDamageTime > 1)
{
self.lastDamageTime = CACurrentMediaTime;
[self shoot];
}
但问题是,比如我在船射击子弹后暂停游戏,然后1秒后,我恢复游戏,if语句通过检查,船将立即射击另一颗子弹。这不是我想要的。
那么,我能做些什么来确保每一天发射的子弹都会让我暂停比赛?我应该使用CCTimer吗?
提前感谢您的回答。
答案 0 :(得分:0)
您可以尝试将拍摄安排为CCRepeatForever
动作,以便cocos2d为您处理暂停。它看起来像这样(假设你在自定义ShipSprite
内).-
CCDelayTime *delay = [CCDelayTime actionWithDuration:1.0];
CCCallFunc *funcShoot = [CCCallFunc actionWithTarget:self selector:@selector(shoot)];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:[CCSequence actionOne:delay two:funcShoot]];
[self runAction:repeat];
答案 1 :(得分:0)
而不是CCRepeatForever你可以试试这样的东西
[self schedule:@selector(shoot) interval:1];
在暂停代码中取消预定拍摄
[self unschedule:@selector(shoot)];
在您的代码中,它会检测到敌人的电话
[self unschedule:@selector(shoot)];
[self performSelector:@selector(shoot)];
[self schedule:@selector(shoot) interval:1];
它会立即拍摄,但它只会拍摄一次,然后以1秒的间隔重新开始等等......所以如果你需要改变它,你可以调整时间