我正在构建一个Sprite Kit游戏,玩家只要按下屏幕就会拍摄粒子。如何限制触摸输入(假设每秒有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中处理时间。