Я установил игру в матче-3, и я хочу отслеживать количество секунд, которое пользователь предпринимает, чтобы коснуться действительных точек (спрайтов в игре) на игровое поле:
(1) когда загружен уровень игры, если пользователь не коснется спрайта в течение 5 секунд, отслеживайте это;
(2) во время игры, если время между пользователем, касающимся спрайта, больше 5 секунд, отслеживайте это.
(Я буду использовать эти результаты, чтобы дать подсказку пользователю).
Я хотел бы использовать для этого NSTimer/NSTimeInterval, но не знаю, как его реализовать.iOS Swift SpriteKit - как определить время, прошедшее между касаниями пользователя на спрайтах
1
A
ответ
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
}
Вам не нужно использовать NSTimer для этого, просто установите целочисленной переменной и добавить к нему 1 в функции обновления(). Затем просто делайте простые преобразования, чтобы получить это время в секундах и т. Д., Так как update() добавит 1 к вашей переменной таймера для каждого кадра. –
@BrennanAdler Это может быть довольно ненадежным, так как частота кадров может меняться. – ZeMoon
@ ZeMoon Если вы не делаете хардкорную 3D-графику или тонну вещей, она останется довольно твердой при скорости 60 кадров в секунду. Для игры, которую делает этот парень, кажется довольно интенсивным память. –