Java 2D 游戏相机无需滚动世界

标签 java

我刚刚完成了为期一个月的项目,为 2D 方 block 角色扮演游戏构建一个非常复杂的 map /世界编辑器。现在我想要实际玩游戏,并且正在使用 map 、角色和通过 map 编辑器生成的其他内容创建游戏的运行时实现。除了相机之外,我几乎清楚地知道自己在做什么。我想不出一种方法可以让相机以类似于 zelda(gameboy) 等游戏(相机固定在角色上)的方式工作,而无需每次都滚动游戏中每个 Sprite 和图 block 的 (x,y) 值玩家移动。我研究过一些游戏引擎,但我不相信这就是我所需要的,尽管我很愿意在这个假设上犯错误。整个游戏都是用图像完成的,没有渲染的形状,这让我相信我不需要乱用 openGL 来让相机按预期工作。谁能建议一种不使用 openGL 来实现相机的方法?我并不反对使用 openGL,但如果不需要,我宁愿不学习它,因为我已经因为其他项目而时间紧迫。谢谢您的建议。

最佳答案

我只会绘制角色相机区域中可见的内容,因此当角色移动时,您不需要移动所有 Sprite 等。然而,屏幕上的任何内容都必须重新绘制。这不会太占用内存,您可以使用某种数据库系统甚至多维数组来设置它,它只会绘制相机内的内容。

例如,如果您的角色位于图 block 100(x) 和 50(y) 上,并且摄像机是图 block 的 7 x 7 网格,则您需要绘制的就是周围 48 个图 block 中发生的任何内容玩家;选手。这就是几乎所有平铺游戏的滚动方式,并且对内存的占用并不大。您应该能够以最小的延迟而不需要太多编程来完成此操作...具体取决于您如何设置图 block 及其分层。

关于Java 2D 游戏相机无需滚动世界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5561433/

相关文章:

java - 将日期字符串从 ISO 8601 格式转换为另一种格式

java - 如何在几次间隔后删除 Firebase 的最后一个条目?

java - 避免同时执行两次 Spring @Async 任务

java - Log4j2 将记录到控制台,但不记录到 log.txt 文件

java - @Valid 注释在 spring boot 中不起作用

java - Swing Graphics 对象未在 JLabel 中绘制图像

java - 如何同时执行 "if"和 "else"?

java - 检索组件类型数组时发生类型未加载错误

java - 如何使用 Hibernate 和 Spring Boot 配置和监控 HikariCP

java - 如何检查一个字符串是否包含给定字符串,而不是另一个给定字符串的一部分?