Photon対戦ゲームにおいてカメラを複数個反転配置する場合Physics 2d Raycasterが機能しない件

               

犬猫将棋ソースコード、素材、遊べるリンクはこちら

Photonによる対戦ゲームにおいて、対戦相手の見る画面を反転したいというようなことはよくあると思います。

 

例えば、オセロや将棋の場合、自分から見て手前側が自分の陣地、奥側が敵陣というようにプレイヤー1とプレイヤー2の見ている向きを逆向きにするのが普通です。

   

結論から言うと、これを単純に解決するためにはSceneCameraをプレイヤー2のみ反転させるというのが正解です。

   

 if(PhotonNetwork.playerList.Length == 1)//一人目の場合
        {
            sceneCamera.enabled = true;
        }
        else//二人目のプレイヤーの場合
        {
            sceneCamera.transform.rotation = Quaternion.Euler(0, 0, 180);//プレイヤー2はカメラを180回転させて画面を反転する。
        }

イメージとしてはプレイヤー1のカメラはプレイヤー1側のオブジェクト、プレイヤー2のカメラはプレイヤー2側のオブジェクトとして各プレイヤー別々に機能していて、それが片方ひっくり返されても同期はとられていないので、他のプレイヤーには影響していないというようなことではないかと想像します。

   

私はCameraを2つ用意して、両方にPhysics 2d Raycasterを付けた状態で、片方をスクリプトでenabledをfalseにするという方法を最初はしていたのです。

 

しかし、それだと、どうやら反転した Physics 2d Raycaster と反転していないものと両方が混在するため、相手の駒に触ると自分の駒のマウスオーバーが作動してしまうバグが出てしまいました。

 

その時の私の表記の仕方です。

 if(PhotonNetwork.playerList.Length == 1)//一人目の場合
        {
            sceneCamera.enabled = true;
       sceneCamera2.enabled = false;
        }
        else//二人目のプレイヤーの場合
        {
            sceneCamera.enabled = false;
       sceneCamera2.enabled = true;
        }

このやり方だと両方のカメラにPhysics 2d Raycasterがついているので、合計で2つ別々のものが作動してしまい、バグが出ますので、ダメでした。

 

基本的にはphysics 2d Raycasterは1つしか使用しないというのが原則なようです。

   

以上、対戦プレイにおけるカメラの配置の仕方についての考察でした。

  もしよろしければ、Photonについて私が知りえる限りの情報を徹底的にまとめてみたので、下記の記事も読んで下さいね!

おすすめの記事