ゲームツクール第8回「unity×photon cloud」
Post on 05-Jul-2015
596 views
DESCRIPTION
ゲームツクール第8回放送用資料です。TRANSCRIPT
ゲームツクール第8回Unity x Photon Cloudをもっと知ろう!
2014/10/31 FAGStudio
この資料について
2014/10/31に放送の「ゲームツクール第8回 Unity×Photon Cloudをもっとしろう!」の資料で
す。・ニコニコ生放送
http://live.nicovideo.jp/watch/lv198274017
おすすめのUnity本!!
画像クリックで詳細ページにジャンプします。
この資料について
細かい操作手順などは過去の放送分があがっていますのでこちらも参考にしてください。
第4回ゲームツクール!unity x photon cloudてオンラインゲームを作ろう!
http://www.slideshare.net/gametsukuru/4unity-x-photon-cloud
Photon CloudについてURL: http://photoncloud.jp/
Photon Cloud 料金についてとりあえず使うのは無料です。(20人まで同時接続可能です。)
Photonのアカウントを作ります
↑初めての場合はアカウントを作る。
ここまでは前準備でした!
最初に新しいプロジェクトを作ります
PhotonUnityNetworkingを導入
Asset Storeからダウンロードすることができます。 PC版は無料です。
Photon CloudサイトよりアプリケーションID取得
アプリケーションIDを入力
アプリケーション IDを入力する。
←ID入れてSaveを押します。
こんな画面になっているかもしれません
こちらはサンプルのSceneに飛ぶMenuになります。
ステージを作成しよう
新しいシーンを作成してとりあえず”main”という名前で保存します。
地面を作ろう!
地面を適当に作りましょう。
今回放送ではあらかじめ作成しておいたTerrainがありますのでそれを使用します。
ライトを付けよう
明かりはゲームにはかかせない要素です。(無いと真っ暗で何も見えません)
太陽の光の機能であるDirectionalLightを追加します。
HierarchyビューのCreateボタンをクリックして、DirectionalLightを選択してください。
プレイヤーキャラを作成しよう
Assets->PhotonUnityNetworking->Demos->DemoWorker->ResourcesフォルダにあるPlayerをベースに作成します。
これを一度Hierarchyビューにドラッグ&ドロップで追加してください。
チャット機能をつけよう!
空のGameObjectを作成して名前をChatとします。
ChatのInspectorビューのAddComponentボタンからInRoomChat.csを追加してください。
これだけでチャットができるようになります!!
ロビーを作ろう
新しいシーンを作成してlobbyという名前で保存します。
ロビーを作ろう
空のGameObjectを作成して名前をMenuと変えます。
PhotonのサンプルであるWorkerMenuをAddComponentしてあげましょう。
ロビーを作ろう
WorkerMenuの21行目のSceneNameGameの名前をmainと変えてください。
↓
lobbyとmainをBuild Settingに設定する
部屋に入ってみる!
ここまでできましたら部屋に入ってみましょう。
余裕があればWebPlayer版を作るなどして一人2役でプレイしてみてください。
部屋に入ってみる!
しかし、何も起こらなかった!!
ここまででは他の人と同じルームに入る事はできますが、チャットができるだけで一緒にプレイする事ができません。
ここがポイント!
Photonでネットの向こう側の人と一緒の画面でプレイするには
・PhotonViewコンポーネント
・Photon専用のMonobehaivor・Photon専用のInistantiateが必要になります。
Photon Viewコンポーネント
オンライン対応するGameObjectに必ず設定します。とても重要!
Photon.Monobehaviourについて
今までのコンポーネントの親クラスであるMonoBehaviourをオンラインプレイができるように機能拡張された
Photon専用のMonobehaviourです。
これがあると、通信部分を作るのが簡単になるので、オンラインに関係のあるコンポートは通常のMonoBehaviourの変わりに親クラスとして設定するようにしましょう。
PhotonNetwork.Instantiateについて
Photon専用のInstantiate機能です。
通常のGameObject.Instantiateでは、
自分の画面では作成されますが、一緒にプレイしている人の画面には作成されません。
オンラインゲームでは自分と相手の両方の画面で同じ物を作成するには自分が作成したことを相手に伝える必要がありますが、PhotonNetwork.Instantiateでは自動的にそれをやってくれるので相手の画面にも表示されます。
オンラインプレイに対応しよう
プレイヤーを前のページで解説したPhotonNetwork.Instantiateで作成すれば
オンラインプレイをすることができます。
mainのSceneに空のGameObject(PlayerCreator)を作成してPhotonのサンプルについてきた
WorkerInGameコンポーネント
をAddしてください!!
オンラインプレイに対応しよう
ProjectビューのどこかにResourcesフォルダーを作って、その中にPlayerのPrefabを作成します!
その後、WorkerInGameのPlayerPrefabの項目にPrefabにしたPlayerを設定します!
オンラインプレイに対応しよう
これでゲームが始まった際にオンラインプレイに対応したプレイヤーキャラクターが作成されます。
HierarchyビューのPlayerは消しておきましょう!!
射撃用の球を作ろう!
簡単ですが、Sphere(名前:Bullet)を作ってそれにBulletスクリプトを新しく作って設定します。(SphereにはRigidbodyを付けよう!)
Copy&Paste: http://goo.gl/Cl2Qf5
射撃用の球を作ろう!
BulletにPhoton View.csを追加します。そして、Prefab化したBulletは ResourcesフォルダにBulletを追加します。
PhotonNetwork.Destroyについて
PhotonNetwork.Instantiateで作成したGameObjectをゲームの世界から削除します。
GameObject.DestroyのPhoton版です。
PhotonNetwork.Instantiateで作った物を通常のDestroyしてしまうと通信相手の画面には残ったままになってしまうので注意しましょう。
ゲームっぽく球を飛ばす機能を作ろう!
オンラインプレイに対応した射撃機能を作ります!
まず、PlayerにShotという名前のコンポーネントを作成して設定してください。
球を飛ばす機能を作ろう!
あとは空のGameObjectを追加して(この場合fire)発射位置を決めてあげればオンラインプレイに対応した球を発射する事ができます。ゲームを2つ立ち上げて確認してみよう!
PhotonView.isMinePhoton.Monobehaviourを継承しているクラスで使う事ができるパラメータで、自分が生成したGameObjectかどうかを調べる事ができます。
これはPhotonNetwork.Instantiateで作成したGameObjectは自分のゲーム上と相手のゲーム上両方に作成されるので、
他の人のキャラクターを誤って操作しないようにする為にしようします。
PhotonView.isMine 続き
PhotonView.isMineを使わないと、矢印キーの上を押したら前に進むって処理が、自分と相手のキャラ同時に行われてしまいます!!
オンラインゲームでは、自分のキャラクター以外は操作しないので、PhotonView.isMineで誤作動しないようにしておきましょう。
一度、ShotコンポーネントのIsMineをコメントアウトして実際に試してみるのもよいかも!