Python 2D游戏引擎-实现摄像头

Python 2D游戏引擎-实现摄像头,python,camera,pygame,2d-games,Python,Camera,Pygame,2d Games,所以我一直在使用Python制作一个游戏,特别是PyGame模块。一切都进行得相当顺利(除了Python的速度,我说得对吗:P),我从中获得了一个很好的成就列表,但我刚刚遇到了一个。。。speedbump。也许是一座山。我还不确定。问题是: 如何使用当前的引擎实现摄像头 不过,这对您来说可能没有什么意义,所以让我来解释一下我的当前引擎的功能:我有一个用于所有图像的精灵表。地图由两个平铺对象数组组成,这些对象填满了显示(800 x 640)。地图还包含对所有实体和粒子的引用。现在我想创建一个摄像头

所以我一直在使用
Python
制作一个游戏,特别是
PyGame模块
。一切都进行得相当顺利(除了Python的速度,我说得对吗:P),我从中获得了一个很好的成就列表,但我刚刚遇到了一个。。。speedbump。也许是一座山。我还不确定。问题是:

如何使用当前的引擎实现摄像头

不过,这对您来说可能没有什么意义,所以让我来解释一下我的
当前引擎的功能:我有一个用于所有图像的精灵表。地图由两个
平铺
对象数组组成,这些对象填满了显示(800 x 640)。地图还包含对所有
实体
粒子
的引用。现在我想创建一个摄像头,这样贴图对象可以比显示器大。为了做到这一点,我设计了一种跟踪播放器的摄像头(播放器位于屏幕中央)。我以前在游戏中看到过这种方法,甚至读过一些其他类似的帖子,但我还需要知道我是否必须重新构造所有游戏代码才能实现这一点?我的第一次尝试是在玩家移动时让所有对象在屏幕上移动,但我觉得有更好的方法,因为这会搞砸碰撞检测等等

所以,如果有人知道这类问题的任何好的参考资料,或是解决它的方法,我洗耳恭听。。。呃。。眼睛

谢谢

您可能会感兴趣

本质上,您需要做的是区分每个对象的“实际”坐标和“显示”坐标

你要做的是使用游戏中每个实体的实际坐标来完成大部分工作。如果有帮助的话,想象一下你有一个巨大的屏幕,可以一次显示所有的东西,并且可以正常计算所有的东西。如果还将摄影机设计为实体,以便可以像任何其他对象一样更新摄影机的位置,则可能会有所帮助

更新所有内容后,转到摄影机对象,确定窗口中可见的瓷砖、对象、粒子等,并将其实际世界坐标转换为正确显示它们所需的像素坐标

如果这样做是正确的,你也可以做的事情,如规模,否则修改图像,你的相机显示不影响游戏

本质上,您希望在游戏性和物理逻辑/代码以及渲染/显示代码之间有一个非常明确的区别,这样您的游戏就可以做任何它想做的事情,并且您可以以您想要的方式渲染它,这两者之间的交叉最小

所以好消息是,你可能不需要改变游戏本身的工作方式。坏消息是,您可能需要重新编写渲染/绘图代码,以便绘制的所有内容都是相对于相机的,而不是相对于世界的。

您可能会感兴趣

本质上,您需要做的是区分每个对象的“实际”坐标和“显示”坐标

你要做的是使用游戏中每个实体的实际坐标来完成大部分工作。如果有帮助的话,想象一下你有一个巨大的屏幕,可以一次显示所有的东西,并且可以正常计算所有的东西。如果还将摄影机设计为实体,以便可以像任何其他对象一样更新摄影机的位置,则可能会有所帮助

更新所有内容后,转到摄影机对象,确定窗口中可见的瓷砖、对象、粒子等,并将其实际世界坐标转换为正确显示它们所需的像素坐标

如果这样做是正确的,你也可以做的事情,如规模,否则修改图像,你的相机显示不影响游戏

本质上,您希望在游戏性和物理逻辑/代码以及渲染/显示代码之间有一个非常明确的区别,这样您的游戏就可以做任何它想做的事情,并且您可以以您想要的方式渲染它,这两者之间的交叉最小

所以好消息是,你可能不需要改变游戏本身的工作方式。坏消息是,您可能需要重新编写渲染/绘图代码,以便绘制的所有内容都是相对于相机的,而不是相对于世界的。

您可能会感兴趣

本质上,您需要做的是区分每个对象的“实际”坐标和“显示”坐标

你要做的是使用游戏中每个实体的实际坐标来完成大部分工作。如果有帮助的话,想象一下你有一个巨大的屏幕,可以一次显示所有的东西,并且可以正常计算所有的东西。如果还将摄影机设计为实体,以便可以像任何其他对象一样更新摄影机的位置,则可能会有所帮助

更新所有内容后,转到摄影机对象,确定窗口中可见的瓷砖、对象、粒子等,并将其实际世界坐标转换为正确显示它们所需的像素坐标

如果这样做是正确的,你也可以做的事情,如规模,否则修改图像,你的相机显示不影响游戏

本质上,您希望在游戏性和物理逻辑/代码以及渲染/显示代码之间有一个非常明确的区别,这样您的游戏就可以做任何它想做的事情,并且您可以以您想要的方式渲染它,这两者之间的交叉最小

所以好消息是,你可能不需要改变游戏本身的工作方式。坏消息是,您可能需要重新编写渲染/绘图代码,以便绘制的所有内容都是相对于相机的,而不是相对于世界的。

您可能会感兴趣