实体组件系统中的边界和位置



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

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

如何协调重叠?

1( 如果一个实体同时具有Bounds分量和一个仓位分量,则将有两个仓位。不好

2(实体只有Bounds从位置组件继承的组件。丑陋,因为我必须覆盖位置组件中的translate等实用程序方法,并让它更新边界对象的位置。此外,实体将没有位置组件,这很奇怪。

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

有什么想法吗?谢谢。

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

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

最新更新