[英]Unity / Mirror second player has no authority on PlayerController
[英]Syncronize player position in unity (Mirror)
目標:在使用鏡像網絡 API 的 Unity 多人游戲中同步玩家 position
問題:
使用 NetworkTransform 組件 position 似乎沒有精確同步,客戶端和服務器都看到播放器在錯誤的 position 中,玩家傾向於無緣無故飛
我嘗試制作一個單獨的腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
public class PlayerSyncronization : NetworkBehaviour
{
[SyncVar]
public Vector3 syncPosition;
[SyncVar]
public Quaternion syncRotation;
public float lerpRate = 15;
private void FixedUpdate()
{
TransmitPosition();
Lerp();
}
void Lerp()
{
if (!hasAuthority) return;
transform.position = Vector3.Lerp(transform.position, syncPosition, Time.deltaTime * lerpRate);
transform.rotation = Quaternion.Lerp(transform.rotation, syncRotation, Time.deltaTime * lerpRate);
}
[ClientCallback]
void TransmitPosition()
{
CmdProvidePositionToServer(transform.position, transform.rotation);
}
[Command]
void CmdProvidePositionToServer(Vector3 pos, Quaternion rot)
{
syncPosition = pos;
syncRotation = rot;
}
}
但是網絡變換組件的結果是一樣的,即使玩家停止行走,在另一邊他繼續行走直到他從 map
信息:
如果需要更多信息,請告訴我。
我知道問題出在我使用的角色 controller 上,所以在播放器腳本中我檢查了播放器是否有權限,如果沒有,我銷毀角色 controller,如果我在服務器上銷毀它,我用普通對撞機替換它沒有物理,所以我仍然可以有碰撞
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.