gpt4 book ai didi

java - 封装游戏实体事件

转载 作者:行者123 更新时间:2023-12-01 13:41:00 25 4
gpt4 key购买 nike

我一直在使用带有刻度和渲染线程的游戏循环结构来用 Java 编写游戏。

我将用2个例子来解释我的问题。假设我们有一个 World 类,它保存所有实体的位置。然后游戏循环循环遍历所有触发其 update() 方法的实体。

示例 1

如果一个怪物想要攻击另一个怪物,它如何访问周围的其他实体列表来进行攻击?如果这是通过传入本地实体列表来完成的,那么通过调用另一个 MonsterrecieveAttack() 方法来直接攻击它是否是正确的方法,或者是攻击怪物最好触发某种标志,包括与攻击相关的数据。然后游戏循环还可以循环遍历所有这些标志并触发适当的攻击。<​​/p>

示例 2

另一个例子是,如果Ship创建了一个Rocket,但是Ship随后爆炸了。如果这个项目符号是在 Ship 类中创建的,它如何仍然存在?

实际问题

我应该如何构建我的游戏以允许此类互动?我知道一些解决方法,例如在调用 update() 时传递主游戏类,但我意识到这非常粗略!

最佳答案

目前游戏系统设计中的一大趋势是实体系统。这些允许从一组相对简单的规则中构建各种复杂的交互。

这是一个太大的话题,无法在这里讨论,但有一个可用于 jME3 的开源实体系统实现,并且 jME3 论坛上有一些关于实体系统如何工作的非常详细的讨论。

http://hub.jmonkeyengine.org/wiki/doku.php/jme3:contributions:entitysystem

http://hub.jmonkeyengine.org/forum/topic/my-es-in-contrib-zay-es/

论坛搜索还可以找到一些深入讨论 ES 的其他线程。

即使您不使用 jME3,Zay-ES 的讨论、概念和实现细节也会为您提供很好的介绍,让您决定这种方法是否适合您。

关于java - 封装游戏实体事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com