【ハルシオンブログ】Photon(PUN2)得意な方教えてください!Photonでプレイヤーがアイテムとかとった時の処理について
こんにちは。坂内っす。
本日はPhotonのお話。
Photonを使っている人ならわかるかもしれない。
PhotonNetwork.Instantiateで作成したものは、それを作ったオーナーしかPhotonNetwork.Destroyができない。
これPhotonの常識。
ここまではいい。
AさんBさんの二人でPhotonを使って対戦している時に、アイテムXが出るとしよう。
AさんがアイテムXをとった時には以下のようにしています。
[ItemBase.cs] アイテムが自分のキャラに触れたときの処理
TransferOwnerShipをすることで、アイテム自体のオーナーを取得したユーザに変更し、最後にアイテムのオブジェクトを消しています。
ここで問題があります。
①この方法でいいのか?
②A、Bの二人が同時にアイテムに触れた場合にエラーがでる。
まず①ですが、こんな感じでやってますが、この方法で消す処理はいいのか?
もっといい方法があるのか?
あるなら教えてフォトンマスター!
②二人同時でアイテムに触れると、2ユーザからDestroyが呼ばれて落ちる。
消すために、オーナーシップを触ったユーザに移し、Destroyをしているため、複数人同時に触ると誰かがエラーになってしまうんです。
厳密にはこんなエラーがでてるので、「AさんがDestroyしてるけど、PhotonViewがもうないよ」って意味ですよね。
これの解決法っていいのありますか?
実は、触ったユーザにオーナー権を渡すのではなく、RPCで消す処理を投げて、MasterClientが消すとかの方がいいのかな?
この辺良く分かってないんですよね。
ってことで、素敵な解決法お待ちしています!
Photonなら任せろ!って方教えて!
ってことで、色々試してみます!あでゅ~ノシ
本日はPhotonのお話。
Photonを使っている人ならわかるかもしれない。
PhotonNetwork.Instantiateで作成したものは、それを作ったオーナーしかPhotonNetwork.Destroyができない。
これPhotonの常識。
ここまではいい。
AさんBさんの二人でPhotonを使って対戦している時に、アイテムXが出るとしよう。
AさんがアイテムXをとった時には以下のようにしています。
[ItemBase.cs] アイテムが自分のキャラに触れたときの処理
private void OnCollisionEnter(Collision col) {
if (col.gameObject.tag == "Player") {
// 触ったプレイヤーを取得
Player player = col.gameObject.GetComponent<PlayerController>();
if (player.photonView.IsMine) {
photonView.TransferOwnership(player.photonView.OwnerActorNr);
// アイテムの獲得
player.GetItem(アイテムX);
PhotonNetwork.Destroy(gameObject);
}
}
}
TransferOwnerShipをすることで、アイテム自体のオーナーを取得したユーザに変更し、最後にアイテムのオブジェクトを消しています。
ここで問題があります。
①この方法でいいのか?
②A、Bの二人が同時にアイテムに触れた場合にエラーがでる。
まず①ですが、こんな感じでやってますが、この方法で消す処理はいいのか?
もっといい方法があるのか?
あるなら教えてフォトンマスター!
②二人同時でアイテムに触れると、2ユーザからDestroyが呼ばれて落ちる。
消すために、オーナーシップを触ったユーザに移し、Destroyをしているため、複数人同時に触ると誰かがエラーになってしまうんです。
厳密にはこんなエラーがでてるので、「AさんがDestroyしてるけど、PhotonViewがもうないよ」って意味ですよね。
Ev Destroy Failed. Could not find PhotonView with instantiationId 15. Sent by actorNr: 1
これの解決法っていいのありますか?
実は、触ったユーザにオーナー権を渡すのではなく、RPCで消す処理を投げて、MasterClientが消すとかの方がいいのかな?
この辺良く分かってないんですよね。
ってことで、素敵な解決法お待ちしています!
Photonなら任せろ!って方教えて!
ってことで、色々試してみます!あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】型のキャストができるかできなかの判別するとき | 【ハルシオンブログ】整数を2進数、8進数、16進数にしたいとき »
コメント
| h o m e |