2014-02-12 76 views

回答

5

如果你想實現像當年拍攝的東西,你需要開始touchesBegan方法拍攝和停止touchesEnded方法拍攝:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self startShooting]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self stopShooting]; 
} 

對於其他的目的,你可以添加UILongPressGestureRecognizerSKScene

+0

感謝安德烈,還有一兩件事。我正在處理的遊戲中,您可以點擊屏幕讓角色向上移動,重力讓它回落。最終會有物體從側面進入,您必須儘量避免。現在,當我點擊屏幕時,我的角色做了我想要做的事情,這是提高了200點,但如果我再次點擊之前,它回到底部,它不上去另一個200,因爲它似乎有引力已經踢過了。一旦屏幕被點擊,是否有辦法重置影響角色的重力? – user3299383

+0

我無法理解你,你可以發佈你的代碼嗎?爲此創造另一個問題 –

4

或者您可以使用更新方法的布爾值:

bool isTouching = false; 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    isTouching = true; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    isTouching = false; 
} 

-(void)update:(CFTimeInterval)currentTime { 
    if(isTouching){ 
     //shooting! 
    } 
} 

如果您願意,可以在isTouching塊內方便地組合您的方法,並使用touchesBegan讓我們同時瞄準子彈。

您不必擔心定時器的更新方法就會一直執行的代碼塊作爲isTouching ==真

3
var isTouching = false 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    handleTouches(touches) 
    isTouching = true; 
} 

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    handleTouches(touches) 
    isTouching = false; 
} 

override func update(currentTime: NSTimeInterval) { 
    if isTouching{ 
     //Shoot CODE! 
    } 
} 
相關問題