3.7.1 摄像机跟随物理节点, 会出现画面抖动残影问题

  • Creator 版本: 3.7.1
  • 目标平台: windows chrome, (!!屏幕刷新率120)
  • 重现概率:必现, 官方的赛博朋克demo里也会出现,对着墙走很明显

    protected lateUpdate(dt: number): void {

        let cameraNode = director.getScene().getChildByName('Main Camera');
        // let camera = cameraNode.getComponent(Camera);

        let pos = this.node.position.clone();
       // 测试结果:只要在 update 或者 lateUpdate 里修改 camera 的位置或旋转, 都会出现这问题
        cameraNode.position = pos.add(new Vec3(0, 5, 10));
        cameraNode.lookAt(this.node.position, new Vec3(0, 1, 0));
    }

老问题了,直接设置camera节点的位置,会抖动,尤其是在使用物理组件的时候,建议直接将摄像机节点作为玩家节点的子节点,这样就不会了

3赞

你说的方法可行, 还是希望引擎组直接处理一下, 摄像机动画里会用到, 感觉像是更新顺序的问题

看了下PhysicsSystem源码, 是在 postUpdate 里更新的, 是在组件的 lateUpdate 之后, 和 unity 有不同.
临时可以监听 director 的 Director.EVENT_AFTER_PHYSICS 事件, 在这里面更新 camera 就不会抖动

那玩家节点旋转时不希望摄像头跟着旋转该怎么做到呢

我监听的这个事件 EVENT_END_FRAME 看名字应该时最后执行的了,但还是会抖。