|

楼主 |
发表于 2007-9-4 20:11:00
|
显示全部楼层
摄象机系统的简单实现 2
在这里面还有个比较值得注意的就是摄象机位置变换的插值运算了,说的直观点就是如何让摄象机能够最平滑的移动,具体原理见<游戏编程精粹3>的一篇关于摄象机的文章,我就是根据它的原理来实现这个摄象机的移动的.我的实现如下(见followcamera.h和cpp):
摄象机是受两个力影响的:
一个是弹力,它好象就是系在player和camera之间的一跟弹簧,离的越远,它的弹力越大,对摄象机的影响就越大,它是驱使摄象机向player移动的,遵循虎克公式
第二是阻尼力,它是阻碍camera移动的,camera的速度越快,它就越大,好象是与速度还是速度的平方成正比,忘了
如果弹力的影响过大,那camera就有可能象钟摆一样老是左右晃,很久很久才能在我们的target位置停下来.如果阻尼力的影响过大,则camera就好象个笨重的沙袋样移动缓慢,有可能永远追不上player.所以这两个力都各自需要一个系数来调整.而着两个系数如何调整,就是<游戏编程精粹3>给我们提供的信息了:
/////////////用做阻尼玄的一些数据/////////////////
Vector3 mvVelocity; //镜头的移动速度
float mfSpringK; //弹性系数
float mfDampingK; //阻尼系数
//X=Kd/2*根号(Ks),X一般取1,即一般:4*mfSpringK=mfDampingK*mfDampingK!!!!!左边的这个式子就是书上所提供的让camera尽快到达target位置而又不会在此多左右晃的一个平衡关系了.
具体算法见followcamera.h和cpp |
|