実現したいこと
PUN2で3Dオンライン対戦ゲームを作っています。
対戦が始まるとボンバーマンのゲームのように自分と相手がそれぞれ決められた位置(座標)から始まるようにしたいです。
if(PhotonNetwork.player.ID == 1)
{
GameObject Player1 = PhotonNetwork.Instantiate(this.GamePlayer1.name, new Vector3(-5.5f, 0.5f, -3.5f), Quaternion.identity, 0);
}
else if(PhotonNetwork.player.ID == 2)
{
GameObject Player2 = PhotonNetwork.Instantiate(this.GamePlayer2.name, new Vector3(5.5f, 0.5f, 3.5f), Quaternion.identity, 0);
}
のような感じにしたいです。
発生している問題
調べてはいるがPlayer.IDの取得の方法が分からない
該当のソースコード
C#
1if(???) 2{ 3 GameObject Player1 = PhotonNetwork.Instantiate(this.GamePlayer1.name, new Vector3(-5.5f, 0.5f, -3.5f), Quaternion.identity, 0); 4} 5else if(???) 6{ 7 GameObject Player2 = PhotonNetwork.Instantiate(this.GamePlayer2.name, new Vector3(5.5f, 0.5f, 3.5f), Quaternion.identity, 0); 8}
試したこと
Player.IDの取得方法が分からないため,これまではPhotonNetwork.PlayerList.Lengthでそれぞれに座標を割り当てていました。↓下記スクリプト
if(PhotonNetwork.PlayerList.Length == 1)
{
GameObject Player1 = PhotonNetwork.Instantiate(this.GamePlayer1.name, new Vector3(-5.5f, 0.5f, -3.5f), Quaternion.identity, 0);
}
else if(PhotonNetwork.PlayerList.Length == 2)
{
GameObject Player2 = PhotonNetwork.Instantiate(this.GamePlayer2.name, new Vector3(5.5f, 0.5f, 3.5f), Quaternion.identity, 0);
}
しかし同時に入室している判定になってしまうため,どちらも同じ座標に出現してしまいます。
それならいっそのこと開き直ってロビーに参加した人から順に座標を割り当てて,ゲームがスタートするまでプレイヤーのオブジェクトを非アクティブにすればいいと思いスクリプトをさっきまで書いていたのですが上手くいきませんでした.(Playerオブジェクトの宣言やアクティブ非アクティブの同期の難しさが原因)
どちらにせよPhotonNetwork.PlayerList.Length を使うのは非効率的だと考えたため最終手段として今回質問させていただきました。どうか回答の方お願いいたします。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.11f
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。