2015-05-11 2 views
1

Я установил игру в матче-3, и я хочу отслеживать количество секунд, которое пользователь предпринимает, чтобы коснуться действительных точек (спрайтов в игре) на игровое поле:
(1) когда загружен уровень игры, если пользователь не коснется спрайта в течение 5 секунд, отслеживайте это;
(2) во время игры, если время между пользователем, касающимся спрайта, больше 5 секунд, отслеживайте это.
(Я буду использовать эти результаты, чтобы дать подсказку пользователю).
Я хотел бы использовать для этого NSTimer/NSTimeInterval, но не знаю, как его реализовать.iOS Swift SpriteKit - как определить время, прошедшее между касаниями пользователя на спрайтах

+0

Вам не нужно использовать NSTimer для этого, просто установите целочисленной переменной и добавить к нему 1 в функции обновления(). Затем просто делайте простые преобразования, чтобы получить это время в секундах и т. Д., Так как update() добавит 1 к вашей переменной таймера для каждого кадра. –

+1

@BrennanAdler Это может быть довольно ненадежным, так как частота кадров может меняться. – ZeMoon

+0

@ ZeMoon Если вы не делаете хардкорную 3D-графику или тонну вещей, она останется довольно твердой при скорости 60 кадров в секунду. Для игры, которую делает этот парень, кажется довольно интенсивным память. –

ответ

1

Я бы не предложил добавлять целое число, как предложено другим.

Все, что вам нужно, это время дельты. Я предполагаю, что у вас есть эта часть работала, но я выложу его на всякий случай

свойства сцены

// time values 
var delta:NSTimeInterval = NSTimeInterval(0) 
var last_update_time:NSTimeInterval = NSTimeInterval(0) 

метод обновления вашей сцены (также создать метод обновления для ваших спрайтов и передать delta в него здесь)

func update(currentTime: NSTimeInterval) { 
     if self.last_update_time == 0.0 { 
      self.delta = 0 
     } else { 
      self.delta = currentTime - self.last_update_time 
     } 

     self.yourSprite.update(self.delta) 

свойства время вашего спрайта

var timeSinceTouched = NSTimeInterval(0) 
let timeLimit = NSTimeInterval(5.0) 

ваше обновление спрайты/прикоснулся метод

func touched(){ 
    self.timeSinceTouched = 0.0 
} 

func update(delta: CFTimeInterval) { 

    if self.timeSinceTouched < self.timeLimit { 
     self.timeSinceTouched += delta 
    } else { 
     // five seconds has elapsed 
    }