Установите флаг в touchesBegan
, чтобы указать, что к экрану прикоснулись:
screentouched = true
, а затем сбросьте флаг в touchesEnded
, чтобы показать, что экран недольше трогается:
screenTouched = false
В update
, если screenTouched
равно true
, уменьшите ваш счет
if screenTouched {
score -= 1
}
Хотя это приведет к уменьшению счета до 60 раз в секунду, так что вы, вероятно, захотите ограничить время.Для этого необходимо иметь 2 свойства типа TimeInterval
, которые отслеживают, сколько времени прошло с момента последнего уменьшения оценки, и как часто следует уменьшать оценку:
var timeOfLastScoreDecrement: CFTimeInterval = 0.0
var timePerScoreDecrement: CFTimeInterval = 1.0
Для этого примера мыЯ буду уменьшать счет каждую секунду и устанавливать время с последнего уменьшения на 0, поскольку это еще не произошло.
В update:
вызовите функцию, которая проверяет, прошел ли временной интервал.Если это так, то уменьшите счет и восстановите время с момента последнего уменьшения, а если нет, то:
override func update(_ currentTime: TimeInterval) {
if screenIsTouched {decrementScoreForTime(currentTime)}
// Rest of update code
}
func decrementScoreForTime(_ currentTime: CFTimeInterval) {
if (currentTime - timeOfLastScoreDecrement < timePerScoreDecrement) {return}
// Time per score decrement has passed...
score -= 1
timeOfLastScoreDecrement = currentTime
}