using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Move : NetworkBehaviour
{
[SyncVar]
private Vector3 v3_PlayerPos;
[SyncVar]
private Quaternion qua_PlayerRotate;
private float my_Speed = 10f;
private float my_RotateSpeed = 60f;
void Update()
{
if (!isLocalPlayer)
{
return;
}
float ver = Input.GetAxis("Vertical");
float Hor = Input.GetAxis("Horizontal");
transform.Translate(Hor * Time.deltaTime * my_Speed, 0, ver * my_Speed * Time.deltaTime);
transform.Rotate(new Vector3(0, my_RotateSpeed * Hor * Time.deltaTime, 0));
}
void FixedUpdate()
{
//如果是本地创建 则把数据更新至服务器 通过SyncVar 发送给所有的客户端
if (isLocalPlayer)
{
CmdSendServerPos(transform.position,transform.rotation);
}
else
{
//如果不是本地创建 则 插值移动(所谓的镜像移动)
LerpPosition();
}
}
//插值移动
void LerpPosition()
{
transform.position = Vector3.Lerp(transform.position, v3_PlayerPos, 5 * Time.fixedDeltaTime);
transform.rotation = Quaternion.Lerp(transform.rotation,qua_PlayerRotate,5 * Time.fixedDeltaTime);
}
[Command]
public void CmdSendServerPos(Vector3 pos,Quaternion rotate)
{
v3_PlayerPos = pos;
qua_PlayerRotate = rotate;
}
}
Unity NetWorking 不用NetWorkTransform
猜你喜欢
转载自blog.csdn.net/weixin_43109909/article/details/82663183
今日推荐
周排行