使用组件-实体-系统(CES)开发游戏的实现

vvsxr 2014-06-14 09:41:14
比如一个小鸟,由物理组件和渲染组件构成。 即class bird 包含了 phsics组件和 render组件

物理组件里有小鸟的坐标方向等信息。

怎么更新渲染组件的位置旋转信息。
我想到两种方法:
1.渲染组件保存指向物理组件的指针,需要更新位置的时候调用物理组件的 getPosition() 函数
2.渲染组件保存小鸟类指针,然后由小鸟类转发物理组件的 getPosition() 函数,即小鸟类也有个 getPosition() 函数,但这个函数是个内联函数,直接调用物理组件的getPosition() 函数。

不知道有没有更好的方法,另外可以使用委托机制。
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2014-09-03
  • 打赏
  • 举报
回复
我觉得应该是 for 待渲染的每一个对象 { 游戏对象.渲染组件.渲染(游戏对象.物理组件.坐标); }
i_dovelemon 2014-09-03
  • 打赏
  • 举报
回复
如果是使用ECS的话,你应该是用系统来完成这些操作,而不是让组件与组件之间进行交互,否则就违背了使用ECS将逻辑和数据分离开来的初衷了。 对于你这种情况,可以创建一个系统,同时对这两个组件进行访问,然后就能够确定如何绘制图元了
边走边瞧 2014-07-07
  • 打赏
  • 举报
回复
引用 1 楼 vvsxr 的回复:
随便来个人结贴了
俺来了。 随便说一句:好像你这两种办法没啥大区别啊,第二种办法只是简单的包装了一下而已。再者,渲染和物理组件定义是什么?不太清楚准确概念。渲染就不解释了,能理解,这个物理组件是小鸟对应的实例吗?
vvsxr 2014-07-07
  • 打赏
  • 举报
回复
随便来个人结贴了

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧