2012-09-09 32 views
1

我創建了一個簡單的碰撞檢測腳本,其工作原理如下: 當英雄與物體之間的距離爲x像素時,英雄可以「行走」x像素,不會碰撞一個物體(英雄+ 3px =沒有碰撞),他會移動5個像素。 但我也必須考慮幀率,並因此將其速度乘以耗用時間/ 20 我的問題是,當某幀時間的幀率非常低或很高時,他只會移動一個附加像素(1px)。機會非常小,但它仍然會發生。 那麼我能做些什麼來防止這種情況?Android遊戲開發:幀速率和碰撞

+0

這是由線程檢測?如果您的幀速率處於最大值和最小值會發生什麼? –

+0

經過時間/ 20或經過時間/20.0f或經過時間/20.0d? –

+0

每當英雄移動並且線程調用checkAction()時,都會調用檢測腳本,checkAction()會檢查按下的按鈕。 its/20f – Carandiru

回答

1

在碰撞後檢查結束時添加位置修正或在碰撞前檢查結束時添加速度修正。

碰撞後:對象被轉換回碰撞點。

預碰撞:對象速度暫時發生變化,因此在下一幀中它將處於碰撞點。

實施例:

  • 你的對象移動75個像素,並通過壁tunnells。 要做什麼?你需要一次迭代的位置歷史記錄。展望 的歷史,你會發現它實際上是在牆壁後面,然後是當前的 位置 - >它現在穿過牆壁xx像素。然後你會設置 它的新位置旁邊的牆壁before繪畫。
  • 你無法知道它何時會落後於你的android:更好的algortihm需要使它獨立於fps。怎麼樣?你可以稍微暫停整個世界,直到fps再次穩定,或者在繪畫之前存儲接下來的幾個迭代,然後在繪畫之前計算事物。
+0

我已經是collsion-check,但我會考慮後collsion檢查!謝謝 :) – Carandiru