让物体移动速度按秒移动,如何实现?
我的程序在好机器上移动速度快,差机器上移动速度慢,这是因为我用的是物体按针移动
我想按秒移动,可是有好多问题,无法解决,比如,我如何预测下一秒,我的物体每针移动多少距离?
因为我下一秒可能会增加很多物体,所有下一秒的针数是不可预测的
我也想过用2个线程,可是线程同步比较麻烦反而开销大
问题点数:20、回复次数:4Top
1 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-17 11:30:04 得分 0
记录上一帧绘制时候的当前时间
和本次绘制的当前时间做比较
有了时间差了,ms级别就够了
当前位置 = 上次位置 + 移动速度 × 时间差 × 移动方向Top
2 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-17 15:22:16 得分 10
看的不是太清楚这样可以不?
long OldTime,NewTime
OldTime = timeGetTime()
。。。。。
NewTime = timeGetTime()
if(NewTime >= OldTime + 1000)
....
Top
3 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-17 19:30:57 得分 0
long OldTime,NewTime
OldTime = timeGetTime()
。。。。。
PerFrame()
{
NewTime = timeGetTime()
long dTime = newTime - oldTime;
oldTime = newTime;
/*
if( dTime>1000) // 这里仅仅是判断两帧之间间隔是否大于1s,这个不是控制速度的
{
}
*/
dTime就是两帧之间的时差
时间乘以速度就是距离啊
按着指定的方向移动这个距离就可以了
}Top
4 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-17 19:41:32 得分 10
楼主的这个问题不是要1秒钟移动一次
每帧固定移动距离的方法毛病在于,在好的电脑后者简单的场景下,每秒钟渲染的次数很高,所以1秒钟当中被多次移动,看起来就很快;相反的慢机器,后者复杂场景上,也许1秒钟当中只移动一次,感觉物体移动的速度就很慢
楼主的目标应该是:无论在什么机器或者场景当中,移动的速度都一样
正确的做法是把每帧移动固定距离的控制方法,修正成固定一个移动速度,比如1秒钟10个单位
实际计算当中根据两帧之间的时间差 和 速度相乘来算移动的具体距离,而不是固定距离
Top




