我正在开发一个主要使用ECS(不是纯ECS(的游戏引擎,但我遇到了一个问题。
某些实体需要Bounds
组件(例如,具有表示位置、宽度和高度的Rectangle
的组件(。比如按钮。 许多实体还需要一个包含位置但不一定包含边界的组件。
如何协调重叠?
1( 如果一个实体同时具有Bounds
分量和一个仓位分量,则将有两个仓位。不好
2(实体只有Bounds
从位置组件继承的组件。丑陋,因为我必须覆盖位置组件中的translate
等实用程序方法,并让它更新边界对象的位置。此外,实体将没有位置组件,这很奇怪。
3(Bounds
组件仅包含宽度和高度。我不喜欢这样,因为那样我就不能用Rectangle
类之类的东西来表示边界。
有什么想法吗?谢谢。
我会选择 3,如果你有一个Bound
组件并在本地框架中表达边界,则需要有一个Transform
组件。
使用左下角和右上角的Rectangle
仍然有意义,因为边界的原点并不总是与组件的原点相同。