Siki老师,您好!这是我第一次向您提交问题,希望得到您的帮助。我在项目局域网开发的过程中使用Unet进行同步,使用到Transform网络同步组件,我发现这个组件的网络传输速度最大每秒29帧,而我的本地移动是在Update中进行的,每秒大概执行60次往上,反正和这个29传输速率不一样,造成对方客户端我这个本地角色移动是瞬间移动一下一下的,看起来效果很不好,Unet下还能改进吗?还是说想要同步最好的效果,我完全舍弃Unet,使用Udp进行局域网的开发,自由度更大,自己定协议和传输时机,希望Siki老师帮忙给出您的建议
在Network Transform组件身上 有一个Movement设置,可以设置下 Interplote Movement Factor,这个是移动的插值因子,可以设置它来调节在同步移动过程中的位置插值运算,这样就不会卡顿了
Unet和自己写Socket都行的,自己写肯定自由度更大
嘿嘿。。。说实话我也遇到跟你一样的问题啊。不过我没用siki大神说的插值方法。。。因为我之前也不知道。。。今天又学到一招啊!!!!谢谢siki大神,在sikiedu总能学到东东。。。
我说说我是怎么弄的。
public SomeClass : NetworkBehaviour
{
[ServerCallBack]
private void Update()
{
bool bNeedTranslate = false;
float rot = MyInput.rotation;
if( rot > 0.01f || rot < -0.01f )
{
bNeedTranslate = true;
rot *= Time.delelTime * m_RotationSpeed;
}
float mov = MyInput.movement;
if( mov > 0.01f || mov < -0.01f )
{
bNeedTranslate = true;
mov *= Time.dalelTime * m_MovementSpeed;
}
if( bNeedTranslate )
RpcTranslate( rot, mov );
}
[ClientRpc]
private void PrcTranslate( float r, float m )
{
transform.Rotate( transform.up, r );
transform.Tranlate( transform.forword * m );
}
}