我在使用unity 5 UNET编写一些多人游戏时遇到困难。 目前我正在使用unity 5.1并希望通过网络同步一些游戏对象的子变换。
问题是所有客户端都发送请求将其子转换同步到服务器。但服务器并没有将其子转换与其他客户端一起下沉。
我听说有一个组件是团结5.2为那项工作,但正如我告诉你我在团结5.1工作所以我想要5.1的解决方案。
这是我的代码。
期待回应
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class Sync_Position : NetworkBehaviour
{
[SyncVar]
Vector3 []sync_pos;
[SerializeField] Transform []obj;
[SerializeField] int lerp_rate;
Vector3 []last_pos;
float threshold=5;
void Start()
{
sync_pos= new Vector3[obj.Length];
last_pos= new Vector3[obj.Length];
}
// Update is called once per frame
void FixedUpdate ()
{
transform_pos();
lerp_pos();
}
void lerp_pos()
{
if(!isLocalPlayer)
{
for(int i=0;i<obj.Length;i++)
{
if(Vector3.Distance(obj[i].localPosition,sync_pos[i]) > 1)
{
obj[i].localPosition=sync_pos[i];
}
}
}
}
[Command]
void Cmd_for_pos(Vector3 p, int index)
{
sync_pos[index]=p;
}
[ClientCallback]
void transform_pos()
{
if(isLocalPlayer)
{
for(int i=0;i<obj.Length;i++)
{
if(Vector3.Distance(obj[i].localPosition,last_pos[i]) > threshold)
{
Cmd_for_pos(obj[i].localPosition,i);
last_pos[i]=obj[i].localPosition;
}
}
}
}
}
答案 0 :(得分:0)
你可以创建&#34;阴影对象&#34;对于服务器上每个连接的客户端/播放器,然后移动这些对象代表antoehr远程对象的位置。
我只能建议查看本教程,因为这是我用来进入UNET的。
https://www.youtube.com/watch?v=NLnzlwCRjgc