我试图在玩家的前面移动一个立方体; 开始时我的草率猜测认为这个应该很容易。经过几天之后,我被纠正了。

我觉得我理解 ECS / Netcode 实体这一点还不够,学习的所在不知道。

第一步骤(如视频所示)

在服务器上,立方体的抓取是可信任的。 服务器将立方体的转换设置为匹配玩家 Socket 上的子对象 (Player > 视图 > Socket),然后立方体就被拉到了 Socket 上。

这个工作与其他客户端的同步保持一致,但运动并不是平滑的。

第二步骤

我尝试使用层级结构:Player > 视图 > Socket -> 立方体,通过将立方体连接到 Socket 上的父组件来实现这点。

但是这点没有起作用,因为父子之间的关联关系没有同步。

第三步骤

我做了一个仅视觉的系统:在服务器和客户端上都使用单独的系统将抓取的立方体进行移动并且它们不是同步的,仅仅在客户端上进行显示。

这种纯视觉方法有效,运动是平滑的,没有任何已同步数据这里,运动是驱动的每个客户端。释放立方体时会出现一个小的闪烁动画,原因是立方体的转换同步由重新启用。

尽管纯视觉解决方案有效,但它感觉不对。

我的问题是: 使用 Netcode for Entities 的父子运动同步的合适方式是甚么?