所以我正在尝试构建这种基本的多人游戏,它有点像mmorpg游戏。到目前为止,这就是它的工作方式。当我连接到游戏时,我可以看到我的角色走动得很好,但是当我的朋友连接并站立不动而我走来走去时,我可以看到我的角色走动并做走动动画,但是他的角色以及即使他在计算机上静止不动,角色也会移动。
这是设置。.当我走路(按W键)时,客户端将输入发送到服务器,然后服务器将数据包发送回客户端,然后更新玩家位置,这也是我正在尝试的位置更新玩家动画。
/// <summary>
/// Packet that's received when the server updates the players position.
/// This happens every game tick, even if the player is standing still
/// </summary>
/// <param name="_packet"></param>
public static void PlayerPosition(Packet _packet)
{
//The players id
int _id = _packet.ReadInt();
//The players position
Vector3 position = _packet.ReadVector2();
//GameManager.players[_id].transform.position = position;
//var clientAnimator = GameManager.players[_id].GetComponent<Animator>();
if (position != GameManager.players[_id].position)
{
GameManager.players[_id].GetComponent<Animator>().SetBool("isWalking", true);
GameManager.players[_id].position = position;
}
else
{
GameManager.players[_id].GetComponent<Animator>().SetBool("isWalking", false);
}
}
我做错了什么事情是显而易见的吗?
我想我可以考虑为什么,但实际上,目前尚无明显的简单解决方案。
我敢打赌,您的播放器是预制的,所以两个播放器实例都有一个Animator
组件,其中引用了[[相同的一个 AnimatorController
。
Animator
。由于此操作未同步,因此仅发生在您的身边,同时发生在两个玩家身上。AnimatorController
实例(克隆)。