现在做摄像机跟随目标移动,在update函数里实时更新摄像机的位置达到了要求,但是效果比较僵硬,如果目标在一帧里移动的距离较大,摄像机也会突然移动过去,如何能做到让这个摄像机缓动过去?
目标每一帧都在移动,为了保持目标在屏幕中心,摄像机的移动频率很高,用action实现不了效果,cc.follow也达不到我的要求,所以在update实时更新摄像机的位置来达到跟随的效果。
如何缓动来实现跟随目标移动呢?
update函数里计算一下距离,比如相机在(30,40),目标在(100,100),需要移动(70,60)。把需要移动的这个向量除以10(可以根据自己想要的加速度调节这个值的大小),那么本帧移动(7,6)。这样的话相机如果离目标远,就移动得快,离目标近,就会慢慢靠过去。再设定一个移动距离下限,比如最少移动(1,1),这样不会出现最后一点点距离移动不完。
2赞
lateupdata
给相机弄个速度和加速度。通过控制速度或加速度去调整相机的位置。
var k=0.6;//缓动系数
在update里运行即可。
camera.x+=(target.x-camera.x)*k;
camera.y+=(target.y-camera.y)*k;
用cc.lerp就行了,简单有效