я новичок в единстве и борюсь со странным поведением моих камер. Я программирую многопользовательскую онлайн-игру с помощью плагина Photon.
Странное поведение:
Player1 входит в систему
-> все хорошо
Player2 входит в систему
-> Камера Player1 переключается на персонажа Player2
-> Камера Player2 переключается на персонажа Player1
Player3 входит в систему
-> Камера Player 1 и Player2 переключается на персонажа Player3
-> Камера Player3 переключается на персонажа Player2.
(но управление движением работает правильно для каждого игрока)
Я получил префаб персонажа, которому в инспекторе прикреплена камера.
А вот мой код для инициализации:
public class NetworkPlayer : Photon.Pun.MonoBehaviourPun, Photon.Pun.IPunObservable
{
public Animator anim;
private Vector3 correctPlayerPos;
private Quaternion correctPlayerRot;
public GameObject myCam;
// Start is called before the first frame update
void Start()
{
if(photonView.IsMine)
{
Debug.Log("PhotonView.IsMine == true");
//Kamera und Steuerung aktivieren
myCam = GameObject.Find("Camera");
myCam.SetActive(true);
GetComponent<PlayerMovement>().enabled = true;
Debug.Log("Steuerung und Cam aktiviert...");
}
}
// Update is called once per frame
void Update()
{
if(!photonView.IsMine)
{
transform.position = Vector3.Lerp(transform.position, this.correctPlayerPos, Time.deltaTime*5);
transform.rotation = Quaternion.Lerp(transform.rotation, this.correctPlayerRot, Time.deltaTime * 5);
}
}
//Exchange Position data
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){
if(stream.IsWriting)
{
//Send data to others
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
stream.SendNext(anim.GetBool("Run"));
}
else
{
//Receive data from others
this.correctPlayerPos = (Vector3) stream.ReceiveNext();
this.correctPlayerRot = (Quaternion) stream.ReceiveNext();
anim.SetBool("Run", (bool) stream.ReceiveNext());
}
}
}
Я также пытался подключить камеру через инспектор, а не искать ее, как в примере кода выше. Надеюсь, что кто-нибудь может мне помочь с этим: (
Спасибо за ваше время!