ue4 AddLocalOffset 不起作用

来源:互联网 发布:webmethod 返回json 编辑:程序博客网 时间:2024/04/30 03:47

遇到了在联机模式下,在客户端的mesh上调用AddLocalOffset没作用的情况,具体问题发现也有人遇到过,但没有解决方案,具体可以看下面的网页

https://forums.unrealengine.com/showthread.php?70797-Character-mesh-AddLocalOffset-not-working-on-replicated-characters

解决过程:

首先在调动AddLocalOffset函数前后打印Mesh的坐标,发现坐标是正确的。也是怀疑,在这之后,Mesh的坐标又被设置了。于是在AddLocalOffset函数打断点,等断点触发,又在SceneComponent中的SetRelativeLocationAndRotation函数处下断点,因为要改变Mesh的坐标,需要调用SetRelativeLocationAndRotation,果然,SetRelativeLocationAndRotation函数被多次调用,一次是AddLocalOffset调用,还有一次收到服务器消息被调用,这都是正常的,还有一次调用堆栈如下:


再看SetRelativeLocationAndRotation调用传进来的参数,NewLocation果然是有问题的,追述堆栈,其中在void UCharacterMovementComponent::SmoothClientPosition_UpdateVisuals()函数中,发现CharacterMovementComponent中NetworkSmoothingMode参数为disable的时候,不会调用SetRelativeLocationAndRotation,而NetworkSmoothingMode属性在蓝图中是可以访问的,于是在蓝图中把NetworkSmoothingMode变量默认值改为disable,果然就好了。

解决方法:

在蓝图中,把CharacterMovementComponent中的NetworkSmoothingMode属性改为disable.

0 0
原创粉丝点击