0

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

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

如何协调重叠?

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

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

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

有任何想法吗?谢谢你。

4

1 回答 1

1

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

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

于 2019-10-20T19:58:51.807 回答