Unity3D相机在多人游戏中的奇怪行为

问题描述 投票:-1回答:1

我还不太熟悉团结,正在为我的相机的奇怪行为而苦苦挣扎。我正在使用光子插件对在线多人游戏进行编程。

奇怪的行为:

  • Player1登录

    ->都不错

  • Player2登录

    -> Player1的摄像机切换为Player2角色

    -> Player2的摄像机切换到Player1角色。

  • Player3登录

    ->播放器1和播放器2的摄像机切换为播放器3角色

    -> 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());
        }
    }
}

我还尝试通过检查器连接摄像机,而不是像上面的代码示例中那样搜索摄像机。希望任何人都可以帮助我:(

谢谢您的时间!

我还不太熟悉团结,正在为我的相机的奇怪行为而苦苦挣扎。我正在使用Photon插件编写在线多人游戏。奇怪的行为:Player1登录->一切正常的Player2 ...

unity3d camera multiplayer photon
1个回答
0
投票

我的猜测是您在播放器上执行了SetAtive(true'),但是从您的图片来看,无论如何,默认情况下,相机似乎都处于活动状态!因此,每个新摄像机都添加到“层次结构”中以前摄像机的下方,这使它在顶部渲染。

您可以简单地在播放器预制中禁用Camera

© www.soinside.com 2019 - 2024. All rights reserved.