PUN2, Unity, multipayer

добавил онлайн, но есть проблема, не знаю как её решать

проблема в том что камера игрока на одном персонаже а управляет он другим(или как это назвать) и ни 1 ни 2 игрок друг друга не видят, если надо скину скрипты( сразу скажу я недавно в Unity и C# так что мой код может быть ужасным и нечитаемым) в общем не знаю что делать, если кто то знает как работать с PUN2, то подскажите

using UnityEngine; 
using Photon.Pun; 

public class PlayerMovement : MonoBehaviourPun 
 
public CharacterController controller; 
public float walkSpeed = 5f; 
public float runSpeed = 10f; 
public float crouchSpeed = 2.5f; 
public float jumpHeight = 2f; 
public float gravity = -9.81f; 
public float crouchHeight = 1f; 
public float standHeight = 2f; 

private Vector3 velocity; 
private bool isGrounded; 
private bool isCrouching; 

void Start() 
{ 
    
     
        if (!photonView.IsMine) 
        { 
            Debug.Log("Этот персонаж не мой, отключаем CharacterController"); 
            GetComponent<CharacterController>().enabled = false; 
            enabled = false;  
            return; 
        } 

        controller = GetComponent<CharacterController>(); 
     

    transform.position = new Vector3(transform.position.x, 1f, transform.position.z); 
} 

void Update() 
{ 
    if (!photonView.IsMine || controller == null) 
        return; 
    Debug.Log("Этот персонаж не мой, управление отключено!"); 

    // Проверяем, на земле ли игрок 
    isGrounded = controller.isGrounded; 
    if (isGrounded && velocity.y < 0) 
        velocity.y = -2f; 

    float currentSpeed = (Input.GetKey(KeyCode.LeftShift) && !isCrouching) ? runSpeed : walkSpeed; 
    if (isCrouching) 
        currentSpeed = crouchSpeed; 

    . 
    float moveX = -Input.GetAxis("Horizontal"); 
    float moveZ = -Input.GetAxis("Vertical"); 

     
    Vector3 moveDirection = transform.right * moveX + transform.forward * moveZ; 
    if (moveDirection.magnitude > 1f) 
        moveDirection.Normalize(); 

    Vector3 horizontalMove = moveDirection * currentSpeed; 

    // Прыжок 
    if (Input.GetKeyDown(KeyCode.Space) && isGrounded) 
    { 
        velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity); 
    } 

    // Приседание 
    if (Input.GetKeyDown(KeyCode.C)) 
    { 
        isCrouching = !isCrouching; 
        controller.height = isCrouching ? crouchHeight : standHeight; 
    } 

    velocity.y += gravity * Time.deltaTime; 

    Vector3 finalMove = horizontalMove + new Vector3(0, velocity.y, 0); 
    controller.Move(finalMove * Time.deltaTime); 
} 
} 

вверху скрипт управления

вид от 2 игрока

вид от 1 игрока

первый скрин вид от лица 2 игрока второй от лица 1 игрока( на скринах два игрока, но первый игрок управляет вторым)

using UnityEngine;
using Photon.Pun;
using Photon.Realtime;

public class PhotonManager : MonoBehaviourPunCallbacks
{
public GameObject playerPrefab; 
public GameObject menuUI;       

void Start()
{
    PhotonNetwork.ConnectUsingSettings();
}

public override void OnConnectedToMaster()
{
    Debug.Log("Connected to Photon Master Server");
    PhotonNetwork.JoinLobby();
}

public override void OnJoinedLobby()
{
    Debug.Log("Joined Photon Lobby");
}

public override void OnJoinedRoom()
{
    Debug.Log("Joined Room: " + PhotonNetwork.CurrentRoom.Name);

    if (PhotonNetwork.IsMasterClient)
    {
        Debug.Log("You are the Master Client");
    }

    SpawnPlayer();

    if (menuUI != null)
        menuUI.SetActive(false);
}

void SpawnPlayer()
{
    
    
        if (playerPrefab == null)
        {
            Debug.LogError("Player Prefab is not assigned in PhotonManager!");
            return;
        }

        
        if (PhotonNetwork.LocalPlayer.TagObject != null)
        {
            Debug.LogWarning("Игрок уже создан! Пропускаем спавн.");
            return;
        }

        
        Vector3 spawnPos = new Vector3(Random.Range(-5f, 5f), 1f, Random.Range(-5f, 5f));

        
        GameObject player = PhotonNetwork.Instantiate(playerPrefab.name, spawnPos, Quaternion.identity);
        PhotonNetwork.LocalPlayer.TagObject = player;

        Debug.Log($"Спавн игрока: {player.name}, IsMine: {player.GetComponent<PhotonView>().IsMine}");
    

}

public void CreateRoom()
{
    RoomOptions options = new RoomOptions { MaxPlayers = 10 };
    PhotonNetwork.CreateRoom("Room1", options, TypedLobby.Default);
}

public void JoinRoom()
{
    PhotonNetwork.JoinRoom("Room1");
}
}

вверху скрипт PhotonManager


Ответы (0 шт):