Unity——Unet位置同步卡顿问题

先说说自己是怎么做的吧:

玩家A:(其客户端同时作为服务器),
带network transform,设置如下
这里写图片描述
移动方式如下(放在Update中调用)

rig.velocity = new Vector3(transform.forward.x * power, transform.forward.y * power, transform.forward.z * power);

玩家B:设定被玩家A“背着”,本身无network transform,作为A的子物体

进行测试时发现:
玩家A视角——看见A背着B匀速平滑移动,
玩家B视角——也是看见A背着B移动,但动起来一卡一卡的(前后抖动)。

研究了下network transform的原理,每秒采集若干个位置,然后用插值把几个位置平滑地“连起来”。

尝试解决移动卡顿问题:

尝试一:改变玩家A的rigidbody中的Interpolate为Interpolate(给刚体运动插值)
这里写图片描述
结果:使得抖动更加剧烈,失败。

尝试二:把移动的代码改为

transform.Translate(Vector3.forward * power * Time.deltaTime, transform);

结果:emmm……和没改前没什么区别,失败。

尝试三:改变玩家A中Interpolate Mover的值(位置同步的插值)
这里写图片描述
结果:把该值调小(0.3左右)能减小抖动,但还是抖动依旧存在,还是……算作失败。

希望之后能找到解决方法。
也希望大神们看见了指点一下迷津。

猜你喜欢

转载自blog.csdn.net/qq_39170292/article/details/81811272