【问题标题】:Bounds and position in entity component system实体组件系统中的边界和位置
【发布时间】:2020-02-16 13:52:58
【问题描述】:

我正在开发一个主要使用 ECS(不是纯 ECS)的游戏引擎,但遇到了问题。

某些实体需要Bounds 组件(例如,具有代表位置、宽度和高度的Rectangle 的组件)。像按钮。 许多实体还需要一个包含位置但不一定包含边界的组件。

如何协调重叠?

1) 如果一个实体同时具有Bounds 组件和位置组件,则将有两个位置。不好

2) 实体只有Bounds 组件,它继承自位置组件。丑陋,因为我必须从位置组件中覆盖像translate 这样的实用程序方法,并让它更新边界对象的位置。而且实体不会有位置组件,这很奇怪。

3) Bounds 组件只包含宽度和高度。我不喜欢这样,因为这样我就不能使用 Rectangle 类之类的东西来表示边界。

有什么想法吗?谢谢。

【问题讨论】:

    标签: java game-engine entity-component-system


    【解决方案1】:

    我会选择 3,如果您有 Bound 组件并在本地框架中表达边界,则要求有 Transform 组件。

    使用带有左下角和右上角的Rectangle 仍然有意义,因为边界的原点并不总是与组件的原点相同。

    【讨论】:

    • 好的,例如,当翻译 Bounds 组件时,这不会影响其转换吗?它可以工作。谢谢
    • 不,它只是在实体的本地框架中翻译。不确定这什么时候有意义,可能是在动画时?您的世界空间界限是通过将 Bound 组件与附加到实体的 Transform 组件转换来给出的。
    猜你喜欢
    • 2016-05-10
    • 2018-07-25
    • 2018-01-05
    • 2016-09-01
    • 2016-01-23
    • 2014-07-06
    • 1970-01-01
    • 2016-05-01
    • 2016-11-05
    相关资源
    最近更新 更多