2016-10-28 15 views
0
using UnityEngine; 
    using System.Collections; 

    public class SpawnGameObjectsNetwork : Photon.MonoBehaviour 
    { 
    public float secondsBetweenSpawning = 0.1f; 
    public float xMinRange = -25.0f; 
    public float xMaxRange = 25.0f; 
    public float yMinRange = 8.0f; 
    public float yMaxRange = 25.0f; 
    public float zMinRange = -25.0f; 
    public float zMaxRange = 25.0f; 
    public float zMinRange2 = 81.0f; 
    public float zMaxRange2 = 85.0f; 
    public string spawnObjects; 
    Vector3 spawnPosition; 
    Vector3 spawnPosition2; 

    public float nextSpawnTime;  

    void Start() 
    {  
     nextSpawnTime = Time.time+secondsBetweenSpawning;  
    }  

    void Update() 
    { 
     if (PhotonNetwork.isMasterClient) 
     {   
      if (Time.time > nextSpawnTime) 
      {    
       Vector3 spawnPosition; 
       Vector3 spawnPosition2; 
       spawnPosition.x = Random.Range (xMinRange, xMaxRange); 
       spawnPosition.y = Random.Range (yMinRange, yMaxRange); 
       spawnPosition.z = Random.Range (zMinRange, zMaxRange); 
       spawnPosition2.x = Random.Range (xMinRange, xMaxRange); 
       spawnPosition2.y = Random.Range (yMinRange, yMaxRange); 
       spawnPosition2.z = Random.Range (zMinRange2, zMaxRange2); 

       GetComponent<PhotonView>().RPC("MakeThingToSpawn", PhotonTargets.All, spawnPosition, spawnPosition2);     
       nextSpawnTime = Time.time + secondsBetweenSpawning; 
      }  
     } 
    } 

    [PunRPC] 
    void MakeThingToSpawn(Vector3 spawnPosition, Vector3 spawnPosition2) 
    {  

      GameObject spawnedObject = PhotonNetwork.Instantiate(spawnObjects, spawnPosition, transform.rotation, 0) as GameObject; 
      GameObject spawnedObject2 = PhotonNetwork.Instantiate(spawnObjects, spawnPosition2, transform.rotation, 0) as GameObject;  


    } 
} 

Dieser Code wird an Spieler Fertig befestigt und schafft zwei Objekte im gleichen Stelle, wich sind sowohl für alle Spieler sichtbar. Ein Spieler kann eines dieser Objekte bewegen und kann das andere nicht steuern, und die Situation ist das Gegenteil für den zweiten Spieler. Wie man es so macht, gibt es nur ein instanziiertes Objekt, das von allen Spielern gesteuert werden kann (bewegt mit ein anderes Skript, das ich habe)?Wie man ein Spielobjekt in Photon Unity Network korrekt instanziiert?

Antwort

0

In Ihrem Fall müssen Sie ein SceneObject mithilfe von PhotonNetwork.InstantiateSceneObject() instanziieren und dann bei Bedarf Ownership auf einen bestimmten Player übertragen.

Es gibt eine Demo im PUN-Paket namens "DemoChangeOwner". Hör zu.

auch diesen Thread lesen, es ist informativ: http://forum.photonengine.com/discussion/1844/photonnetwork-instantiate

zum Beispiel, das ist die Aufgabe des MasterClient, dies zu tun, so dass nicht alle Kunden berechtigt sind.

Bye,

Jean

+0

Vielen Dank für Ihre Antwort, leider 've bereits versucht PhotonNetwork.InstantiateSceneObject() und transferingOwnership, aber es didn' t mein Problem zu lösen, ich denke, dass das Problem wahrscheinlich in meinem "Grabbing-Objekt" -Skript. –

Verwandte Themen