如何让camera 动态缩放

想实现一个效果:地图是固定的,无人机视角,会存在移动和缩放的效果,类似聚焦视点效果。计划用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