我还不太熟悉团结,正在为我的相机的奇怪行为而苦苦挣扎。我正在使用光子插件对在线多人游戏进行编程。
奇怪的行为:
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 ...
我的猜测是您在播放器上执行了SetAtive(true')
,但是从您的图片来看,无论如何,默认情况下,相机似乎都处于活动状态!因此,每个新摄像机都添加到“层次结构”中以前摄像机的下方,这使它在顶部渲染。
您可以简单地在播放器预制中禁用Camera
。