如何渲染以秒为单位的事物
How to render things expressed in seconds
基本上,我正在制作一个简单的乒乓球游戏。你可以看到我做到了,每次球与某物碰撞时,都会出现一个命中标记。
但这一刻不是只有一帧吗?由于渲染被称为每秒 x 次,而 x 是 fps。所以我意识到,如果玩这个游戏的人以较慢的帧速率玩游戏,那么命中标记将显示更长的时间。
TL;DR 如何让某些东西在 秒 内渲染一定数量而不是 帧 ,以便具有不同 fps 的人在相同的时间内看到图像。
核心:http://pastebin.com/QrJUxusR
桌面:http://pastebin.com/i0w4H4Wq
露class:http://pastebin.com/wuPnUBbg
您需要存储第一次绘制命中标记的时间加上应该绘制多长时间的时间(以毫秒为单位)。现在你知道只要存储的时间大于当前时间就可以绘制命中标记..
伪代码:
private long hitmarkerDrawStart;
if(collission) {
hitmarkerDrawStart = TimeUtils.millis() + 1000; // 1000ms = 1s
}
public void render() {
if(hitmarkerDrawStart > TimeUtils.millis()) {
//draw the hitmarker batch.draw(...)
}
}
基本上,我正在制作一个简单的乒乓球游戏。你可以看到我做到了,每次球与某物碰撞时,都会出现一个命中标记。 但这一刻不是只有一帧吗?由于渲染被称为每秒 x 次,而 x 是 fps。所以我意识到,如果玩这个游戏的人以较慢的帧速率玩游戏,那么命中标记将显示更长的时间。
TL;DR 如何让某些东西在 秒 内渲染一定数量而不是 帧 ,以便具有不同 fps 的人在相同的时间内看到图像。
核心:http://pastebin.com/QrJUxusR
桌面:http://pastebin.com/i0w4H4Wq
露class:http://pastebin.com/wuPnUBbg
您需要存储第一次绘制命中标记的时间加上应该绘制多长时间的时间(以毫秒为单位)。现在你知道只要存储的时间大于当前时间就可以绘制命中标记..
伪代码:
private long hitmarkerDrawStart;
if(collission) {
hitmarkerDrawStart = TimeUtils.millis() + 1000; // 1000ms = 1s
}
public void render() {
if(hitmarkerDrawStart > TimeUtils.millis()) {
//draw the hitmarker batch.draw(...)
}
}