想实现一个效果:地图是固定的,无人机视角,会存在移动和缩放的效果,类似聚焦视点效果。计划用camera来实现,但是 zoomRatio属性是一个固定值,有没有办法做到能像动效一样,让camera动态缩放,边移动边缩放。直接缩放地图是可以实现的,但是调整效果会很繁琐。
用tween或者实现一个actionFloat或者用update
想了下,用tween+progress控制进度的方式,看是否可行
可以将渲染出来的画面进行缩放,没实践过,理论上可以
tween的progress不是用来每帧回调的. 我这里有个函数, 可以实现onUpdate.
/**
* actionFloat的缓动版本
* @param from 开始值
* @param to 结束值
* @param onUpdate 每帧回调
* @param onComplete 完成回调
*/
function tweenFloat(from: number, to: number, duration: number, onUpdate: (t: number) => void, onComplete?: Function, autoStart: boolean = true) {
let o: Record<string, number> = { _value: from };
Object.defineProperty(o, 'value', {
get: () => o._value,
set: (v: number) => { o._value = v; onUpdate && onUpdate(o._value); },
});
let tween = cc.tween(o).to(duration, { value: to }).call(onComplete);
if (autoStart) {
tween.start();
}
return tween;
}
1赞
试了下,这个函数还挺好用的,比直接Update好控制些。用这个函数+tween来实现了,暂时也想不到其他办法了。多谢@tbwind