UnityのPhotonの勉強メモ~オンラインゲームを作りたい~
題名の通り、オンラインゲームが作りたいVyseArtのトナカイです。
どんなオンラインゲームかというと、ネタバレすると(技術が追い付かず)こちらが楽しくないので、ざっくりと、ゲーム要素のあるチャットのようなものを作りたいわけです。
そこで、Photonをこれから何回に分けて勉強していきます。
Photonでオンラインゲームを作るには
Unityには猫本というものがありまして、北村愛実さんの「Unityの教科書」です。その猫本の非オンラインのゲームをオンライン化してみたというサイトがあります。それを学習しました。
そのサイトはこちら です。
学んだこと
(PhotonのセットアップやUnityへインポートができた後のお話です。)
●オンライン化したいオブジェクトに、スクリプト「PhotonView」をアタッチする(これは必須)
●オンライン(して操作)するオブジェクトはプレファブ化する(これは普通に考えてそうですよね)(追記:JoinedLobbyなどロビーの概念があるとその後のプレファブのInstantiateが必要だと考えて、普通に考えてと書きました。)
●Instantiate生成するプレファブはAssetフォルダ直下のResourcesフォルダに置くこと(必須)
●オンライン化したオブジェクト(自分のものは自分で)操作するには、スクリプトの内容に『if(photonView.isMine){ }』という形式で記述すること
以上が必要だということが分かりました。
======
学習
トナカイ(私個人)の学習では、二つのデバイス(アンドロイド実機とUnityエディタ)に、それぞれ二つのPlayerを表示させることができた。ただし、片方のデバイスで動かしても、もう片方にその動きが反映されなかった。
そこら辺の解説をしたサイトでとても分かりやすいものがあったので掲載します。
わかった限りで要約すると、PhotonViewをオブジェクトにつけるだけではなくて、動きを同期させる必要と、手順があること(PhotonViewのObservedComponentsにTransformをアタッチする)。ただし、自分のTransformを当該箇所にアタッチすると、かくかくとした動きになってしまう。
上記の問題を解消するために、PhotonTransformViewというコンポーネントが登場する。これを上記の当該箇所にアタッチすると、滑らかな動きで同期されるということだった。
この記事のまとめ
こんなレベルでブログを書いていくのですが、一歩一歩進んでいくために書きます。
Photonでオンラインゲームを作るには…
PhotonViewをアタッチする(必須)
オンライン化するオブジェクトをプレファブ化する
そのプレファブは、Assetフォルダ直下のResourcesフォルダに入れること
そして
自分のオブジェクトを操作するには、isMineプロパティを使い、記述する
デバイス間の動機にはPhotonTransformViewコンポーネント利用が良い。(Transformだとカクカク)
以上です。
今後のPhotonの学習は、私のチーム(VyseArt)がチャットぽいオンラインゲームを作ろうかという話だったので(もっといろいろあるのですが)Photonのチュートリアルサイトを見て知識を深めるとともに、上記の知識で、案に出たチャットゲームっぽく作るにはどの知識を使えばよいかを予想を立てて考察していくことになります。
(ちなみにPhotonのチャット機能は使わないつもりです)
必要なもの(とキーワード)は、吹き出しが出てきて(Instantiate、IsMine、PhotonView)、ルームマスターともう一人役割があって(以後学習。OnJoinedLobbyから)、途中参加もできて(購入した書籍を参考に、ググる)、吹き出しが上にちょっとずつ移動していく感じ(これも購入した書籍を参考)
というような知識が必要だと思いました。
トナカイ