2016-10-28 2 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;  


    } 
} 

이 코드는 모든 플레이어가 볼 수 모두있는 같은 장소, 느릅 나무에서,이 객체를 플레이어 조립식에 부착 생성된다. 한 플레이어는 개체를이 개체로 이동할 수 있으며 다른 개체를 제어 할 수 없으며 상황 은 두 번째 플레이어의 반대입니다. 그것을 만드는 방법은 단지 하나의 인스턴스화 된 개체, 모든 플레이어에 의해 (내가 가지고있는 다른 스크립트로 이동) 제어 할 수 있습니까?Photon Unity Network에서 게임 개체를 올바르게 인스턴스화하는 방법은 무엇입니까?

답변

0

경우에 따라 PhotonNetwork.InstantiateSceneObject()를 사용하여 SceneObject를 인스턴스화 한 다음 필요시 특정 플레이어에서 소유권을 이전해야합니다.

"DemoChangeOwner"라는 PUN 패키지로 제공되는 데모가 있습니다. 확인 해봐.

도 너무이 스레드를 읽고, 그것은 정보의 : 예를 들어 http://forum.photonengine.com/discussion/1844/photonnetwork-instantiate

이이 작업을 수행 할 수있는 MasterClient의 일이다, 그래서 모든 클라이언트는 자격이 없습니다.

안녕,

+0

감사합니다 당신의 대답을, unfortunatelly i've 이미 PhotonNetwork.InstantiateSceneObject() 및 transferingOwnership을 시도했지만 내 문제를 해결 돌아가신't, 내가 문제가 아마도이라고 생각 내 "잡는 대상"스크립트에서. –

관련 문제