1前提
UnityでCubeを生成しようとしています。
Unityのバージョンは2019.3.13fです。
オンライン対戦できるゲームを作りたいと思いPhotonを使おうとして、その導入として、オブジェクトの生成をしようとしています。
2問題
Instantiateを使って生成しようとしていて、座標は(0,0,0)に指定しているのですが、実際に生成された座標を見てみると毎回異なり、(800,19000)あたりになっています。
生成位置がずれています。また、Cubeが2個生成されているのは、Object.InstantiateとPhotonNetwork.Instantiateの二種類を試しているからです。この二つのCubeはどちらも同じ座標でした。
"Cube"を生成しているスクリプトです。
using
1using Photon.Realtime; 2using UnityEngine; 3 4// MonoBehaviourではなくMonoBehaviourPunCallbacksを継承して、Photonのコールバックを受け取れるようにする 5public class PhotonManager : MonoBehaviourPunCallbacks 6{ 7 [SerializeField] 8 GameObject cube; 9 private void Start() 10 { 11 // PhotonServerSettingsに設定した内容を使ってマスターサーバーへ接続する 12 PhotonNetwork.ConnectUsingSettings(); 13 } 14 15 // マスターサーバーへの接続が成功した時に呼ばれるコールバック 16 public override void OnConnectedToMaster() 17 { 18 // "room"という名前のルームに参加する(ルームが無ければ作成してから参加する) 19 PhotonNetwork.JoinOrCreateRoom("room", new RoomOptions(), TypedLobby.Default); 20 } 21 22 // マッチングが成功した時に呼ばれるコールバック 23 public override void OnJoinedRoom() 24 { 25 Instantiate(cube, new Vector3(0, 0, 0), Quaternion.identity); 26 // マッチング後、ランダムな位置に自分自身のネットワークオブジェクトを生成する 27 var v = new Vector3(Random.Range(-3f, 3f), Random.Range(-3f, 3f)); 28 GameObject vObj = PhotonNetwork.Instantiate("Cube", new Vector3(0,0,0), Quaternion.identity); 29 30 } 31} 32コード
Photonを使用して、マッチング時に呼ばれるコールバックで生成しようとしています。
Instantiateが二つあり、一つはPhotonNetwork.Instantiate、もう一つは普通のInstantiateで生成しているのですが、どちらも同じ(0,0,0)からズレたところに生成されます。
3試した方法
初めはPhotonNetwork.Instantiateでやっていることに問題があると思い、普通のinstantiate でやってみたのですが、やはり、生成される座標位置は同じでした。
また、PhotonNetworkではなく、別のからのオブジェクトを用意して、startメソッドからInstantiateしようとしたのですが、結果は変わりませんでした。
4最後に
追加で必要な情報などがありましたら、おっしゃってください。
今までInstantiateは何回も使ってきたのですが、今回のように指定した位置とずれた場所に生成されてしまうのは初めてで、対応策がわかりません。何かご存知の方がいらっしゃりましたら、ご指導いただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー