首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何渲染2d侧滚轮游戏

如何渲染2d侧滚轮游戏
EN

Stack Overflow用户
提问于 2010-04-13 11:54:33
回答 3查看 2.2K关注 0票数 0

我真的不明白我应该如何渲染侧滚屏?如何知道角色移动时要渲染的内容?我应该对角色使用什么样的定位?我希望我的问题是清楚的。

EN

回答 3

Stack Overflow用户

发布于 2010-04-13 11:57:58

我找到的最简单的方法是让characterX和characterY变量整型或浮点型,然后有一个cameraX和cameraY变量。场景中的每个对象都是在object cameraX,object CameraY...

CameraX/CameraY通过类似于中点的公式进行补间,因此最终它们将到达playerx/playery[Cx = (Cx*99+Px)/100] ...嗯

通过这样做,每个对象都在舞台的空间中移动,并且只在渲染时进行变换,从而避免了令人头疼的问题

票数 1
EN

Stack Overflow用户

发布于 2010-04-14 16:30:35

  • 使用矩阵定义相机参考帧。
  • 使用空间分区将您的关卡划分为screens/windows.

把你的玩家精灵想象成任何其他实体,比如敌人和交互对象。现在你想要的是相机的抽象。您可以使用以下布局将摄像机定义为3x3矩阵:

代码语言:javascript
复制
[rotX_X, rotY_X, 0]
[rotX_Y, rotY_Y, 0]
[transX, transY, 1]

左上角的2x2子矩阵是一个旋转矩阵。transX和transY定义了翻译部分,即原点。你也可以免费获得伸缩性。只需简单地用标量缩放旋转部分,你就有了一个缩放。

为了正确地使用旋转,精灵需要是多边形/基本体,比如三角形或四边形;在绘制时,不能只将矩阵应用于精灵的位置。如果你不需要旋转,只要变换中心点就可以了。如果您希望相机跟随播放器,请使用播放器的位置作为相机原点。这就是平移向量transX,transY,那么如何将矩阵应用于实体位置和模型顶点?你做一个向量矩阵乘法。v‘= vM^-1,其中v’是新的向量,v是旧的向量,M^-1是矩阵的逆。摄影机需要是逆变换,因为它定义了一个局部坐标系。一个类比可以是:如果你在我前面,我从我的参照系向左转,我就会向右转。这适用于所有的仿射和线性变换,如缩放、旋转和平移。

将关卡分成多个子部分,这样你就可以剔除不需要渲染的对象和场景。您的视口具有特定的大小/分辨率。仅渲染与视口相交的场景和实体。不是根据视口边界检查每个实体,而是将每个实体分配到某个子屏幕,并根据视口和相机边界测试子屏幕的边界。如果将级别划分为与视口大小相同的部分,则在任何特定时间可见的最大屏幕数量为:

如果相机只向左和向右滚动,则使用

  • 2。如果相机只向左、向右、向上和向下滚动,则使用
  • 4。如果相机向任何方向滚动,则使用
  • 4,此外,还可以旋转。

屏幕更改是可用于激活属于该屏幕的实体的事件。这可能是敌人,背景动画,门或任何你喜欢的东西。

票数 0
EN

Stack Overflow用户

发布于 2010-04-17 12:35:57

如果这是您第一次尝试编写侧滚屏,我建议您考虑使用现有的游戏引擎(如ConstructGamemakerXNA或任何适合您经验水平的引擎),这样您就不必担心渲染事物的顺序以及如何使其全部工作。稍微打乱一下--可能是探索其中的几个--去了解他们是如何做事情的,然后一旦你习惯了,就去尝试你自己的。这并不是说用火洗礼有什么错,但在我看来,它可能会变得相当压倒性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2626884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档