我在Godot中使用了子视口来渲染我的游戏,发现更新它的尺寸并没有在同一帧内立即生效。这意味着在调用全局鼠标位置前后,摄像头缩放变化或尺寸2D覆盖变化都不会按照预期工作。

我最终通过设定一个布尔标志来告诉我的摄像机脚本在它的下一帧(call_deferred 也没有工作,我尝试过使用 tree_timer 的 timeout,但我不喜欢在这样短的延迟上使用那些东西)中获取鼠标位置。这解决了问题,但我无法将摄像机的位置变换与显示服务器实际上改变大小时的生效相.sync(我认为这发生在异步线程中),这样就导致了在缩放变化之间存在着不协调的闪烁效果。因此我现在在缩放变化之间线性插值(lerp),看起来相当不错。

反正,Happy Sunday 啊,每个人都开心!