我有一個移動的火星着陸器,我想檢測它何時在我正在製作的一個遊戲中打到加油站的頂部。我想知道確切地知道他們何時命中的最佳方式。什麼時候檢查碰撞
我現在在做的是我有3個計時器控制水平,垂直和引力運動。每個計時器都會使火星着陸器移動一點,所以我把碰撞檢測代碼放在每個火焰的頂部和底部,但是由於每個火焰每50毫秒發射一次a)它不會在發生碰撞時準確檢測到,b)它會調用碰撞檢測代碼很多次。
這是一個計時器看起來和它的幾乎所有3個相同的(我使遊戲在2008年VB中,這僅僅是一些僞代碼):
gravity timer:
detectCrash()
Move ship
detectCrash()
End timer
什麼是更準確的方法來查看它們是否在從碰撞到所調用的代碼的響應時間方面發生碰撞。
我該如何稱檢測的次數更少?
我可能再拍計時器每10毫秒火災左右,檢查碰撞,但那麼這將運行代碼,一個可怕的很多倍(100次),不會吧?
我也很好奇大型遊戲會如何處理這種最有可能每秒發生多次的事情。
謝謝。
爲什麼在移動之前檢查碰撞?如果之前的迭代(定時器末尾的那個)沒有檢測到崩潰,那麼在定時器的開始就不會有一個,對吧?如果你擺脫了這一點,那麼你將處理時間(碰撞)減半。 – APrough 2012-07-27 12:47:55
哦,是的。事情是,因爲有3個計時器,我認爲其他人可能已經移動了船,然後如果在再次移動之前檢查運動,則需要更少的時間。 – cohen 2012-07-27 12:52:52