2016-10-30 127 views
1

我遵循PUN基本教程的步驟。 現在我達到了我想要的一部分在當前時間發送我的位置給另一個與我在房間裏的球員移動他。每次更新它時我都可以打印我的位置,我需要的是知道如何將位置發送給其他玩家以移動他。 假設我有一臺桌面播放器,當我將這個翻譯移動到移動播放器上時, 而我如何停止在移動設備上實例化對象,我只想處理桌面上的實例化對象。 我正在使用Unity和Photon網絡SDK。使用Unity Photon將玩家位置發送給其他玩家以在多人遊戲中移動他

下面是我用

using UnityEngine; 
using System.Collections; 

public class NetworkCharacter : Photon.PunBehaviour { 

    private Vector3 correctPlayerPos; 

    void Update() 
    { 
     if (!photonView.isMine) 
      transform.position = Vector3.Lerp(transform.position, this.correctPlayerPos, Time.deltaTime * 5); 

     photonView.RPC ("PrintPosition", PhotonTargets.All, transform.position); 
    } 

    void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) 
    { 
     if (stream.isWriting) 
     { 
      // We own this player: send the others our data 
      stream.SendNext(transform.position); 
     } 
     else 
     { 
      // Network player, receive data 
      this.correctPlayerPos = (Vector3)stream.ReceiveNext(); 
     } 
    } 

    [PunRPC] 
    void PrintPosition(Vector3 pos) 
    { 
     Debug.Log (pos); 
     //I need to send position coordinates to the other device 
    } 
}

另一類建立多人環境的代碼:

using UnityEngine; 
using System.Collections; 

public class NetworkManager : Photon.PunBehaviour { 

    // Use this for initialization 
    void Start() { 
     PhotonNetwork.ConnectUsingSettings ("0.1"); 
     //PhotonNetwork.logLevel = PhotonLogLevel.Full; 
    } 

    void Update() { 

    } 

    void OnGUI() 
    { 
     GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString()); 
    } 

    public override void OnJoinedLobby() 
    { 
     Debug.Log("join lobby!"); 
     PhotonNetwork.JoinRandomRoom(); 
    } 

    void OnPhotonRandomJoinFailed() 
    { 
     Debug.Log("Can't join random room!"); 
     PhotonNetwork.CreateRoom(null); 
    } 

    void OnJoinedRoom() 
    { 
     Debug.Log("join random room!"); 
     GameObject monster = PhotonNetwork.Instantiate("monsterprefab", Vector3.zero, Quaternion.identity, 0); 
    } 
}

回答

2

潘有一些新的成分,因爲他們的新的更新。 我建議你使用這些組件,因爲它對新用戶非常友好。

一些組件可以使用:

  • PhotonTransformView
  • PhotonRigidbodyView
  • PhotonAnimatorView

這三個組件將幫助您同步您的位置,物理和動畫在它所連接的遊戲對象至。

如果你不想使用這些組件我建議你搜索了:插和外插的統一PUN。

一些很好的起點教程:

希望這會對你有幫助。

-Menno

+0

謝謝,這很有幫助。 –

1

我發現,在潘插件提供了演示同步的答案,這是真的很有幫助。

+0

SkyArena的開發者的YouTube視頻對同步有很好的解釋,它與PUN插件的Demo Sync非常相似。 所以我建議檢查一些這些視頻。 – Mennolp