我正在尝试让我的游戏使用增量时间,以便它独立于FPS。我做了这件事并将它们并排比较:
但144fps的玩家仍然走得更快。我的代码:
@RunWith(AndroidJUnit4::class)
class MainActivityView {
@get:Rule
val activityTestRule = object : ActivityTestRule<MainActivity>(MainActivity::class.java, true, false) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
val myApp = InstrumentationRegistry.getTargetContext().applicationContext as MyApplication
myApp.activityDispatchingAndroidInjector = createFakeActivityInjector<MainActivity> {
mainViewModel = mainView
viewModelFactory = mockMPF // TODO: fix problem, null pointer in activity
}
}
}
private val mockMPF = Mockito.mock(ViewModelProvider.Factory::class.java)
private var mainView = Mockito.mock(MainViewModel::class.java)
private val repoLiveData = MutableLiveData<ApiResponse<Result>>()
@Before
fun setup() {
Mockito.`when`(mainView.getFactsList()).thenReturn(repoLiveData)
}
@Test
fun isListDisplayed() {
repoLiveData.postValue(ApiResponse(Result("title", arrayListOf(Row("title", "des", "img"))), null))
activityTestRule.launchActivity(null)
onView(withId(R.id.recycler_adapter)).check(matches(isDisplayed()))
}
}
我做错了什么?
P.S:我很肯定这不只是我的眼睛和我一起玩。我可以看到播放器在144fps上的速度比在60fps上的速度快。答案 0 :(得分:2)
这里的问题不是增量时间本身。
当您计算速度变化时,您将完美地应用增量时间。
当您实际将速度应用于播放器itselft时,问题就出现了。假设你处于最大速度(5)。由于在将速度应用到位置时没有考虑增量时间,因此您将以144fps而不是60fps更频繁地应用速度方式。这就是角色看起来更快的原因。
你可能想做类似的事情:
position += velocity * delta;
那应该解决你的问题。