現在UnityにてPhotonを使用してマルチプレイゲームを開発しております。全プレーヤー共通のアイテムをマップにランダムに生成したいと考えています。
下記のコードでアイテムを生成しているのですが、プレーヤーごとにアイテム生成の位置が異なってしまします。
C#
1using UnityEngine; 2using Photon.Pun; 3 4public class WeaponManager : MonoBehaviourPunCallbacks 5{ 6 private GameObject weaponItem; 7 private GameObject[] weaponsInMap; 8 9 void Update() 10 { 11 photonView.RPC(nameof(GenerateWeaponBox), RpcTarget.All); 12 } 13 14 [PunRPC] 15 private void GenerateWeaponBox(){ 16 weaponsInMap = GameObject.FindGameObjectsWithTag("weaponBox"); 17 if(weaponsInMap.Length < 40){ 18 int random = UnityEngine.Random.Range(0, 100); 19 int randomX = UnityEngine.Random.Range(-50, 50); 20 int randomZ = UnityEngine.Random.Range(-50, 50); 21 Vector3 genPos = new Vector3(randomX, 0.5f, randomZ); 22 if(random < 40){ 23 weaponItem = (GameObject)Resources.Load("weaponBox-sun"); 24 }else if(random < 70){ 25 weaponItem = (GameObject)Resources.Load("weaponBox-ufo"); 26 }else if(random < 100){ 27 weaponItem = (GameObject)Resources.Load("weaponBox-planet"); 28 } 29 Instantiate(weaponItem, genPos, Quaternion.identity); 30 } 31 } 32}
[PunRPC]以下の関数は全プレーヤー共通のメソッドという認識なのですが誤っておりますでしょうか。
どのようにすればアイテムを全プレーヤー共通の位置に生成できるかを教えて頂きたく。
その他、試したこととして、
下記の部分をUpdate関数内に記述しgenPosをRPCの引数として渡してみましたが、やはりアイテム生成の位置が異なってしまいました。
int random = UnityEngine.Random.Range(0, 100); int randomX = UnityEngine.Random.Range(-50, 50); int randomZ = UnityEngine.Random.Range(-50, 50); Vector3 genPos = new Vector3(randomX, 0.5f, randomZ);
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。