ページ

2013年11月23日土曜日

実際にPhotonCloudを使ってみる~基本編②~

最近PhotonCloudに動きがあったそうで、何やら新しいサービスが開始されるそうです。
この講座が無意味になるような内容じゃなかったら良いのですが・・・。

それでは、前回に引き続き基本編です。
今回のテーマは可視化。
色んな物が見えるようにしてみましょう。

前回の「lobbyMain.cs」 にGUILayoutを追記します。

「lobbyMain.cs」

public class lobbyMain : Photon.MonoBehaviour {

<省略>

void OnGUI(){

GUILayout.Label( PhotonNetwork.connectionStateDetailed.ToString() );

}


}
実行してみましょう。
左上に何やら文字列が表示されましたね?
これが現在のネットワーク接続状況です。
「Joined」と表示されれば無事にルームへと入室できたことが分かります。

◆PhotonNetwork.connectionStateDetailed
現在の接続状況を返してくれる。
デバッグ的に画面に表示させる他、接続が完了するまでは処理をしない、
といった条件判断にも活用できる。


続きまして、ネットワークゲームなので操作できるキャラクターが欲しいところですね。
ということで、

・プレイヤーがルームに入室すると、そのプレイヤーのキャラクターを画面に表示する

部分をまず作ってみたいと思います。


①プレファブの設定

キューブでもスフィアでもなんでもいいので、ヒエラルキーから追加します。
名前を適当に変更します。
この場合は「playerObj」としました。

photon viewというスクリプトをアタッチします。
これは検索で出すもよし、Add ComponentからMiscellaneousを辿って追加することもできます。

それをプロジェクトのResourcesフォルダ内にドラッグし、プレハブを作成した後、ヒエラルキーに残ったオブジェクトを削除します。




②スクリプトの設定

「lobbyMain.cs」に以下のように追記します。

「lobbyMain.cs」

public class lobbyMain : Photon.MonoBehaviour {

<省略>

//ルームに入室したときに自動で実行される
void OnJoinedRoom(){

Vector3 createPos = Vector3.zero;
createPos.x = PhotonNetwork.room.playerCount * 1.5f;
PhotonNetwork.Instantiate("playerObj",createPos,Quaternion.identity,0);

}

void OnGUI(){

GUILayout.Label( PhotonNetwork.connectionStateDetailed.ToString() );

}

}
ウェブプレイヤー辺りで書き出し、 多重起動してみましょう。
以下のようになれば成功です。




窓を増やせば増やすほど、ボックスが増えていきますね。
このボックスがそれぞれのプレイヤーです。

スクリプトの解説ですが、上から
  1. createPosという原点を格納した変数を作成
  2. createPosのx座標を現在のプレイヤー数×1.5に設定
    ※オブジェクトが重なるのを避けるため
  3. ネットワーク上にオブジェクトを作成
という流れになっています。

◆PhotonNetwork.room.playerCount
現在自分がいるルームに何人プレイヤーがいるかを取得

◆PhotonNetwork.Instantiate
Instantiateをルームに入室している全てのプレイヤーで実行させるようなもの。
この命令で作成されたオブジェクトをオンラインで同期することができる。


今回はここまでです。
次回はこのオブジェクトを動かし、その動きをネットワークで同期します。

何かおかしいところがありましたら、是非お教え下さい。

0 件のコメント:

コメントを投稿

状況に応じてご返事できない場合がございます。
予めご了承ください。