定心精灵还是移动相机?C++/Opengl 我自学C++,玩二维瓦片映射。< /P>

定心精灵还是移动相机?C++/Opengl 我自学C++,玩二维瓦片映射。< /P>,c++,opengl,camera,tile,C++,Opengl,Camera,Tile,我一直在阅读这个滚动的帖子,它是基于这个的 使用上述教程和Pearson,Computer Graphics with OpenGL一书中的一些帮助,我编写了一个小程序,可以绘制一个40x40平铺世界和一个Sprite(也是一个平铺) 就绘制/渲染顺序而言,贴图(或世界)本身就是最后面的层,而精灵是最前面(或最上面)的层。我认为这是一种很好的方法,因为两个互动块比一个互动块和一个自定义精灵或矩形更容易互动。对吗 我已经实现了一个Keyhandling()函数,该函数允许您使用键盘箭头键在视口中移

我一直在阅读这个
滚动的
帖子,它是基于这个

使用上述教程和Pearson,Computer Graphics with OpenGL
一书中的一些帮助,我编写了一个小程序,可以绘制一个
40x40
平铺世界和一个
Sprite
(也是一个平铺)

就绘制/渲染顺序而言,贴图(或世界)本身就是最后面的层,而精灵是最前面(或最上面)的层。我认为这是一种很好的方法,因为两个互动块比一个互动块和一个自定义精灵或矩形更容易互动。对吗

我已经实现了一个
Keyhandling()
函数,该函数允许您使用
键盘箭头键在
视口中移动
贴图
。我有一个变量叫做
offsetx,offsety
,当按下一个键时,它会增加或减少。根据我是将变量指定给
映射
还是
精灵
,我可以在屏幕上的任何方向上选择一个或多个变量

这两种方法似乎都不能很好地工作,因此我将变量同时指定给(贴图和精灵),但精灵的值为正值,贴图的值为负值。因此,按下一个键,这允许我的精灵在一个方向上移动,而地图在相反的方向上移动

我的问题是,精灵很快移动到足以离开窗口,而不足以将更多的地图带入场景。(该窗口在任何时间仅显示约1/8的磁贴)

我想了一整天,我认为解决这个问题的一个有效方法是将
精灵
固定在屏幕中央,当按下一个键时,
地图
会移动。。。但我不确定如何实现这一点


这是个好办法吗?还是希望它也移动视口或摄影机?

您不希望在角色移动时移动与精灵相关的所有内容。考虑一个更复杂的世界,你在地图上还有其他东西,比如其他精灵。最简单的方法是固定地图,并相对于地图移动每个精灵(如果它是可移动的精灵)。当你的角色在世界上移动的时候,移动世界上的所有东西是没有多大意义的

如果你想让你的角色始终处于中心来渲染你的世界,那是非常好的。最好的办法是移动相机。这还允许您放大/缩小相机、旋转相机等,而无需太多麻烦即可跟踪世界上的所有对象

小心使用“视口”一词。这在OpenGL中意味着一个非常特殊的东西。(即,查看函数
glViewport
)。如果你的书用的不同,那没关系。我只是指出这一点,因为我不完全清楚你所说的是什么意思