2015-05-11 10 views
1

我已經設置了一個match-3遊戲,並且我想要跟蹤用戶用來觸摸有效點(遊戲塊精靈)的秒數遊戲棋盤:
(1)當遊戲關卡加載時,如果用戶在5秒內未觸及精靈,請跟蹤此; (2)在玩遊戲時,如果用戶觸摸精靈之間所經過的時間大於5秒,則跟蹤這個。
(我將使用這些結果向用戶提供提示)。
我想爲此使用NSTimer/NSTimeInterval,但不知道如何實現它。iOS Swift SpriteKit - 如何檢測用戶觸摸精靈之間所經過的時間

+0

你並不需要使用的NSTimer的這一點,只需設置一個整型變量和1的update()函數添加到它。然後,只需簡單的轉換就可以在幾秒鐘內獲得這個時間,因爲update()會爲每個幀添加1到您的計時器變量。 –

+1

@BrennanAdler這可能是相當不可靠的,因爲幀速率可能會有所不同。 – ZeMoon

+0

@ZeMoon除非你正在做硬核3D圖形或一大堆東西,它將保持在60 fps非常穩定。對於這個人正在製作的遊戲來說,這看起來非常不靈活。 –

回答

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 
    }