gpt4 book ai didi

c++ - 使 Sprite 居中还是移动相机? C++/Opengl

转载 作者:太空狗 更新时间:2023-10-29 23:06:28 24 4
gpt4 key购买 nike

我正在自学 C++ 并玩弄 2D tile mapping。

我一直在阅读这篇滚动 帖子 here ,这是基于这个 tiling tutorial .

使用上面的教程和Pearson,OpenGL 计算机图形学 一书的一些帮助,我编写了一个小程序来绘制一个40x40 平铺世界和一个 Sprite(也是一个图 block )。

就绘制/渲染顺序而言, map (或世界)本身是后层,而 Sprite 是最前(或顶层)层。我假设这是一个很好的方法,因为 2 个图 block 比一个图 block 和一个自定义 Sprite 或矩形更容易交互。对吗?

我已经实现了一个 Keyhandling() 函数,让您可以使用 keyboards arrow keysviewport 移动 map/。我有一个名为 offsetx, offsety 的变量,当按下某个键时它会增加或减少。根据我是将变量分配给 map 还是 sprite,我可以在屏幕上的任何方向增加一个或另一个。

两者似乎都不是很好,所以我将变量分配给两者( map 和 Sprite ),但 Sprite 的值为正, map 的值为负。因此,只要按下一个键,我的 Sprite 就可以朝一个方向移动,而 map 会朝相反的方向移动。

我的问题是, Sprite 很快移动到足以离开窗口,但不足以将更多 map 带入场景。 (该窗口一次仅显示大约 1/8 的图 block )。

我一直在思考一整天,我认为解决这个问题的一种高效/有效的方法是将 sprite 固定在屏幕中央,当按下一个键时 map 四处移动...不过我不确定如何实现它。

这会是个好方法吗?还是希望它也移动视口(viewport)或相机?

最佳答案

您不想在角色移动时移动与 Sprite 相关的所有内容。考虑一个更复杂的世界,您在 map 上还有其他东西,例如其他 Sprite 。最简单的方法是保持 map 固定,并相对于 map 移动每个 Sprite (如果它是可移动的 Sprite )。每当您的角色在世界中四处移动时,移动世界上的一切就没有多大意义。

如果您希望渲染您的世界时始终以您的角色为中心,那完全没问题。最好的办法是移动相机。这还允许您放大/缩小相机、旋转相机等,而无需跟踪世界上的所有对象。

小心使用“viewport”这个词。这意味着 OpenGL 中非常具体的事情。 (即,查看函数 glViewport)。如果您的书以不同的方式使用它,那很好。我只是指出这一点,因为我不是 100% 清楚你的意思。

关于c++ - 使 Sprite 居中还是移动相机? C++/Opengl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com