如何限制触摸输入?

时间:2014-10-17 00:39:40

标签: ios objective-c touch sprite-kit particles

我正在构建一个Sprite Kit游戏,玩家只要按下屏幕就会拍摄粒子。如何限制触摸输入(假设每秒有2个识别的触摸输入),这样玩家就不能快速点击屏幕来获得无限制的镜头?

2 个答案:

答案 0 :(得分:2)

另一个解决方案: 创建一个BOOL(我更喜欢自己使用属性,所以):

@property (nonatomic, assign) BOOL touchEnabled;

在场景的初始化中将其设置为YES。然后就此而言相当简单:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     if (self.touchEnabled){
         self.touchEnabled = NO;
         [self shootParticle];
         [self performSelector:@selector(enableTouch) withObject:nil afterDelay:2.0];
     }
...

- (void)shootParticle{
   // whatever...
}

- (void)enableTouch{
   self.touchEnabled = YES;
}

答案 1 :(得分:1)

众多可能性中的一种:

@interface YourSceneName (){
    int _amountBullets; //increase every time you shot and just shoot when _fireStop = NO 
    BOOL _fireStop; // init as NO at start
    BOOL _needStartTime; // init as YES at start
    CFTimeInterval _startTime;
}
@end

-(void)update:(CFTimeInterval)currentTime {

//set starttime
    if(_needStartTime){
        _startTime = currentTime;
        _needStartTime = NO;
    } 

//timeinterval if 2 seconds, renew everything
    if(currentTime - _startTime > 2){
        _startTime = currentTime;
        _amountBullets = 0
        _fireStop = NO;
    }
//set firestop to yes, method should be executed
    if(_amountBullets = 2){
        _fireStop = YES;
    } 
}

我是SpriteKit的新手,但这应该有效。我打赌有更好的可能性。我也没有测试代码。 shell会告诉你如何做到这一点的逻辑,希望我能提供帮助。 这是一个伟大的Tutorial用于在SpriteKit中处理时间。