首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于实体系统的博弈中水平部分的变化

基于实体系统的博弈中水平部分的变化
EN

Stack Overflow用户
提问于 2014-07-04 22:00:05
回答 3查看 402关注 0票数 0

我目前正在使用artemis和libgdx开发一个基于实体系统的游戏,我想知道我应该如何处理这种配置中的级别更改。

例如,使用一个类似马里奥的平台:

首先,Mario启动级别,引擎实例化一个新World(),加载tilemap并初始化所有对象。

如果马里奥穿过管道怎么办?管道里的世界是一个新世界吗?还是相机只聚焦在世界的另一个地方?

如果我们有一个新的世界,artemis不允许将一个实体从一个世界中分离出来,那么我可以克隆这个播放器实体并将它添加到新的世界吗?

有人知道如何处理这种级别变化(马里奥的部分/安倍的奥德赛屏幕)吗?使用类似artemis的框架实现这一目标的常见方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-24 10:26:07

最后,我决定添加一个定义矩形的房间对象层(见下图)。

每个房间都是一个矩形,它的x,y坐标和宽度,高度尺寸。每个房间定义了允许相机移动的范围,如果播放器与另一个房间相交,相机沿着x轴或y轴从n室滑行到n+1房间,如果房间大于屏幕,则允许相机滚动。

我已经能够提高性能并使用这种方法解决许多问题,只处理当前房间中包含的实体,而不是计算每个帧的全部世界。

票数 0
EN

Stack Overflow用户

发布于 2014-07-04 23:45:11

考虑将每个特定级别的构建解耦,这样您的世界对象就可以接受一个特定的级别,这个级别既可以读取像mario块和管道这样的实体的位置,也可以在特定的级别类中定义它们。允许您的世界将新级别设置为一种方法,或者每次都可以创建一个新的world对象,并取消为垃圾收集而附加的旧对象。对于类似于管道中的世界,如果你不想在玩家已经达到水平的情况下加载它,你就无法在远处的某个地方建造房间或区域,并使用管道将角色传送到房间内的某个位置。

票数 0
EN

Stack Overflow用户

发布于 2014-08-24 08:08:34

我会创建一些LevelTagComponent,并将其添加到所有特定于级别的实体中。自定义管理器应该做剩下的-关闭一些实体时,马里奥进入调谐器或删除他们,当水平被完全改变。

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

https://stackoverflow.com/questions/24581129

复制
相关文章

相似问题

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