多角色在MovementBase上相互阻挡产生位移

刚开始多个角色在一个可以移动的平台上移动会阻挡另外一个玩家让其产生移动,然后定位到是因为charactermovement里面的updatemovementbase中去moveupdatecomponent时会检测deltaposition的位置是否会产生一个blockhit,然后我们修改了Character上的isbasedonactor让ShouldIgnoreHitResult可以通过。修改之后大部分时间是满足预期的,但是还是偶尔会出现静止不动的玩家会被移动的玩家挤压产生一个预期以外的位移。

想咨询这里是因为什么原因导致的位移,然后有什么办法可以避免这个问题像在静止的地面上一样移动的玩家无法推开其他静止的玩家

您好,从描述上看我觉得可能是网络同步时由于网络延迟出现一系列校正导致位置发生偏移和抖动,CMC存在动态物体之间交互和同步时的局限,下一代移动组件会对这方面进行改善,如果有更多细节或者重现方式您也可以通过视频等方式进行补充~

这个是我录制的视频,玩家所在的平台会一直移动,一开始是没有在IsBaseOnActor里面返回true的情况,玩家会被另外一个玩家阻挡导致玩家在charactermovement里面的moveupdatedcomponent返回false玩家的位置就没有真正发生改变,表现的结果就是玩家被另外一个玩家推开了。后面在IsBaseOnActor里面返回了true之后就表现为被推倒了旁边,但是这里我不太清楚是哪里的逻辑让玩家的位置改变了

从视频上看应该是在触发碰撞后玩家SlideAlongSurface在地形表面产生了滑动,而且应该只会在这个客户端有这段位移,服务端其实并没有这个位移,服务端的玩家的位置应该还是被挤开前的位置,由于被挤开的玩家是静止状态这段时间内movement数据并没有同步到客户端中,因此只有客户端存在这段碰撞的位移