第03日目になりました。
三日坊主にならないためにもここは頑張って乗り越えたい所です。
今日はPUN2によるPHOTONの導入とチャット機能のテストをしたいと思います。
それから、店内を動き回れるようにもしたいと思います。
これはUnityの無料アセットStandardAssetを使ってやろうと思います。
まずはPUN2をインポートするところから始めます。
目次
PUN2によるPHOTONの導入とチャット機能のテストの準備
まずアセットストアからPUN2を探してきて、インポートします。
これは私は一度やっているので既にPackageManagerに入っています。
今回はチャットを触るのが初めてなのでデモを参考にしようと思い、デモにも全部チェックが入った状態でインポートします。
PUNのセットアップウインドウが立ち上がります、そこにAPPIDをPHOTONのウェブサイトから発行してペーストします。
Photon Server Settings でAPP Id ChatをPhotonのウェブサイトから同じく発行して入れます。
これで、PHOTONの準備が整いました。
PHOTON Chat チャットデモの使い方
嬉しいことにPhotonのデモにはChat機能のデモが入っているので、それを起動してみます。
このデモにはチャット機能でできる事が一通り詰まっているようです。
下記のパスのところにDemoChatというシーンが入っているので、
シーンをダブルクリックして起動してみます。
起動するとログイン画面が出てきます。
ここに自分の名前をタイプするか、Joe、Jane、Bob、のどれかをタイプします。
Connectを押すとチャットルームに入れます。
私は、JaneでログインしたのでConnectted as Janeと出ています。
これでチャットができるようになっています。
左上のチャンネルでチャットのチャンネルを選べます。
相手も同じチャンネルに入っていないとチャットをみれません。
「?」マークを押してみます。ヘルプ画面が出てきます。
まず、新たなチャンネルを作りたい・入りたい場合は\subscribe 「チャンネル名」 か \s 「チャンネル名」です。
これで左上のRegion Guildの他に、もう一つチャンネルを追加したりできます。
チャンネルを消したい場合は \unsubscribe 「チャンネル名」 か、 \u 「チャンネル名」でできます。
アクティブなチャンネルを切り替えるのは左のチャンネルをクリックするか、
\join、\j 「チャンネル名」でもできるようです。
プライベートメッセージを特定の人に送りたい場合、\msg 「ユーザー名」 「メッセージ」 でおくれます。
すると、Channelのところにプライベートチャンネルが立ち上がるので、そこをクリックすると、シークレットメッセージが送れます。
他にもステータスを変えたりする機能がありますが、これだけ使えればよいと思います。
PHOTON Chat チャットデモをプロジェクトと合体する
沢山の機能が詰まっているデモがあるので、これをそのまま使ってしまいたいと思いました。
下のデモのシーンから、ヒエラルキービューで必要なオブジェクトを全部プロジェクトシーンにコピーしてしまいます。
プロジェクトウィンドウのデモチャットシーンファイルを、ヒエラルキービューにドラッグアンドドロップします。
一時的に背景シーンとチャットシステムシーンを共存させ、デモシーンの中に入っているものをごっそり全部背景シーンにドラッグして移動してしまいます。
これが移動する内容です。
これで、チャットデモが背景シーンの中で動くようになります。
プロジェクトウィンドウの中のファイルは一切触りません。
UnityのStandardAssetのFirstPersonControllerの追加
毎度おなじみStandardAssetを追加します。
このアセットは古いので一部エラーが出ます。
エラーが出た所はコメントアウトして、エラーは回避するようにしました。
FirstPersonControllerの追加と床の設定
アセットをインポートすると、下記のフォルダが出てきます。
その中にFirstPersonControllerというものが入っているので、それをヒエラルキービューに追加することにします。
FPSControllerの位置を調整してモデルの中に置きます。
床が定義されていないので、SceneにCubeを置き、BoxColliderをつけて衝突が起こるようにします。
ついでに階段の部分にも傾いた床を置いて、二階のメザニンに登れるようにします。
これで、FPSControllerが床を突き抜けて落ちなくなるはずです。
Cubeメッシュは見えてるとかっこ悪いのでメッシュの表示だけ非表示にしてあります。
それから複数人が部屋に入る事を想定して、身体を作っておきます。
今は適当にFPSControllerにSphereと引き延ばしたSphereを加えてあげます。
チャット機能とFirstPersonControllerの移動入力キーの干渉を防ぐ
一度ゲームをプレイしてみると、様々な問題がおこります。
一つは、マウスのカーソルが無効化されているのでチャットのログイン自体出来ません。
エスケープキーで一度マウスのカーソルを出すことはできますが、WASD及びスペースキーは移動とジャンプに使われているので、
タイプするとキャラが移動してしまいます。
そこで、FirstPersonControllerについているスクリプトを読んでそこを書き換えることにします。
VisualStudioを立ち上げ、FirstPersonController.csを読むと、直接キーを指定しているのではなく、”Vertical” ”Horizontal” ”Jamp”を指定している事がわかりました。
よって、これはUnity側の設定でキー入力を変える必要があることがわかります。
そこで、WASDとスペースキーの入力は”Vertical ””Horizontal”” Jamp”の設定から消してしまうことにします。
Edit>Project Settings>InputManagerから該当するPositive,Negativeボタンに割り当てられているWASDとスペースキーを消してしまいます。
これで、チャット機能にキー入力が干渉しなくなります。
それからマウスのカーソル表示をオンにするためには、
MouseLook.csの83行目のGetMousButtonUpを検知するところでcursorIsLockedがTrueになっているせいだったので、Falseにしてしまいます。
これで一度クリックするとマウスが見えるようになります。
おわりに
これで、一応チャットと、店内の移動と両方できるようになりました。
チャットウィンドウをクリックする時にマウスに釣られて頭の向きが変わってしまうのはどうにかしたい所ですが。
今日はタイムアップとなったので、後日対応することにします。
それでは、また!