я делаю онлайн шутер от 3-его лица и происходит баг с присваиванием камеры. Делаю на Unity при помощи PUN 2
На сколько я знаю, в Photon 2 есть баг с присваиванием камер. Она присваивается одна к двум игрокам, но проблема не в том, что я управляю сразу двумя камерами, а в том, что я вообще не могу управлять камерой, когда подключается второй игрок, когда игрок дин то се работает. Долго искал решение в интернете и не нашел. Помогите, пожалуйста.`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using System;
public class PlayerCintrollerSecondEdition : MonoBehaviour
{
[SerializeField]
private float MoveSpeed = 5f;
[SerializeField]
private float LookSpeed = 3f;
[SerializeField]
private Camera Cam;
private PhotonView photonView;
Vector3 velosity;
Vector3 xRotation;
Vector3 yRotation;
public Transform CamTrans;
public Transform pivot;
public Transform Character;
public Transform mTransform;
public CameraConfig cameraConf;
public bool leftPivot;
public float delta;
public float mouseX;
public float mouseY;
public float smoothX;
public float smoothY;
public float smoothXVel;
public float smoothYVel;
public float lookAngle;
public float titlAngel;
public Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
photonView = GetComponent<PhotonView>();
}
// Update is called once per frame
void Update()
{
if (photonView.IsMine) {
MoveContr();
}
}
void MoveContr()
{
float xMov = Input.GetAxis("Horizontal");
float zMov = Input.GetAxis("Vertical");
Vector3 movHor = transform.right * xMov;
Vector3 movVer = transform.forward * zMov;
velosity = (movHor + movVer).normalized * MoveSpeed;
/* float yRot = Input.GetAxis("Mouse X");
xRotation = new Vector3(0f, yRot, 0f) * LookSpeed;
float xRot = Input.GetAxis("Mouse Y");
yRotation = new Vector3(xRot, 0f, 0f) * LookSpeed;
*/
if (velosity != Vector3.zero)
{
rb.MovePosition(rb.position + velosity * Time.fixedDeltaTime);
}
}
void FixedUpdate() {
if (photonView.IsMine)
{
FixedTick();
}
}
void FixedTick() {
delta = Time.deltaTime;
HandleRot();
HandlePos();
Vector3 targetPos = Vector3.Lerp(mTransform.position, Character.position, 1);
mTransform.position = targetPos;
}
void HandlePos() {
float targetX = cameraConf.normalX;
float targetY = cameraConf.normalY;
float targetZ = cameraConf.normalZ;
Vector3 newPivotPosition = pivot.localPosition;
newPivotPosition.x = targetX;
newPivotPosition.y = targetY;
Vector3 newCameraPosition = CamTrans.localPosition;
newCameraPosition.z = targetZ;
float t = delta * cameraConf.pivotSpeed;
pivot.localPosition = Vector3.Lerp(pivot.localPosition, newPivotPosition, t);
CamTrans.localPosition = Vector3.Lerp(CamTrans.localPosition, newCameraPosition, t);
}
void HandleRot()
{
mouseX = Input.GetAxis("Mouse X");
mouseY = Input.GetAxis("Mouse Y");
if (cameraConf.turnSnooth > 0)
{
smoothX = Mathf.SmoothDamp(smoothX, mouseX, ref smoothXVel, cameraConf.turnSnooth);
smoothY = Mathf.SmoothDamp(smoothY, mouseY, ref smoothYVel, cameraConf.turnSnooth);
}
else
{
smoothX = mouseX;
smoothY = mouseY;
}
lookAngle += smoothX * cameraConf.Y_rot_speed;
Quaternion targetrot = Quaternion.Euler(0, lookAngle, 0);
mTransform.rotation = targetrot;
titlAngel -= smoothY * cameraConf.Y_rot_speed;
titlAngel = Mathf.Clamp(titlAngel, cameraConf.minAngl, cameraConf.maxAngl);
pivot.localRotation = Quaternion.Euler(titlAngel, 0, 0);
}
}
`