HIROMARTBLOG

Unity、Cocos2d-xのこととか書けたらいいですね。

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~オブジョクトの同期~

      2015/05/17

前回の記事では、同期するオブジョクトの生成を行ってもらいました。

今回は、オブジョクトの同期の方法を書いていこうと思います。

自分とそれ以外の判定

基本的にオブジョクトを動かすソースコードは、同じのを使います。

なので、何かで自分と他のオブジョクトを見分ける必要があります。

UnityChan2DControllerの編集

DemoUnityChan2Dに追加されている[UnityChan2DController.cpp]を編集します。

PhotonCloud_37

継承の変更

 

public class UnityChan2DController : MonoBehaviourから

public class UnityChan2DController : Photon.MonoBehaviourに変更します。

PhotonCloudで使うオブジョクトは、Photon.MonoBehaviourを継承します。

Update()の変更

Update()関数を下記のように変更します。

変更前


void Update()
{
if (photonView.isMine) {
if (m_state != State.Damaged) {
float x = Input.GetAxis("Horizontal");
bool jump = Input.GetButtonDown("Jump");
Move(x, jump);
}
}
}

 

変更後

 


void Update()
{
if (photonView.isMine) {
if (m_state != State.Damaged) {
float x = Input.GetAxis("Horizontal");
bool jump = Input.GetButtonDown("Jump");
Move(x, jump);
}
}
}

if (photonView.isMine) を追加しました。

PhotonCloud上で、自分が生成したオブジョクトなら[photonView.isMine]がtrueそうでなければ、falseを返します。

これで、自分のオブジョクトとその他オブジョクトの切り分けが出来ました。

 

Transformの同期

まずは、Transformの同期を行います。

Transformは、positionやrotationの事です。

Transformを同期すれば、オブジョクトを移動させると自分以外のプレイヤー画面でもオブジョクトが移動するようになります。

DemoUnityChan2DにPhoton Transform Viewの追加

まずは、DemoUnityChan2DにPhoton Transform Viewを追加をします。

PhotonCloud_28

Photon Viewに追加

そして、Photon Transform ViewをPhoton Viewに追加します。

PhotonCloud_29

わかれにくいかもしれませんが、[Photon Transform View]の上辺りをクリックしながら[Photon View]のところにドラッグアンドドロップしてください。

PhotonCloud_30

このように変更されれば大丈夫です。

Positionの同期

Positionの同期からやりましょう。

PhotonCloud_31

[Photon Transform View]の赤枠部分のところをクリックしてください。

PhotonCloud_32

Positionの部分が展開されました。

・Enable teleport for greater distances 大きく同期がズレた場合、テレポートを有効にしますか

Onにすると、同期ズレが大きくなったオブジョクトをテレポートさせて強制的に座標を上書きしてくれます。

・Teleport if distance greater than ○以上の場合、テレポートをします。

入力された数値より距離が離れたらテレポートされます。

・Interpolate Option [オプション補間]

設定するとオブジョクトの動きがなめらかになる。

  • Disable[無効]
  • Fixed Speed[固定速度]
  • Estimated Speed[推定速度]
  • Synchronize Values[値を使って同期] スクリプト側で直接値を設定して、同期します。
  • Lerp [線形補間]

・Extrapolate Option [オブジョクト補外]

未来の座標を予測して、オブジョクトの動きを読み同期ズレを低減する

  • Disable[無効]
  • Rotate Towards
  • Lerp [線形補間]

・Draw synchronized position error [同期位置誤差の表示]

ONにするとSceneViewに同期座標が描画される

という意味です。

とりあえず、同期させて動かすだけなら下記画像のように設定してください。

変更箇所

PhotonCloud_44

 

動作確認

ここで一度、動作を確認してみましょう。

前回のように、1つはBuildをして実行ファイルを作成して実行、そしてUnity上でも実行をして2つ実行して、動作を確認してください。

自分が生成したオブジョクトだけ動くと思います。

まとめ

今回で、PhotonCloudで同期したもので自分のオブジョクトだけが動くようになりました。

ただ、まだアニメーションが同期されていません。

次回は、アニメーションの同期方法を書いていきます。

では。

ユニティちゃんライセンスこのアセットは、『ユニティちゃんライセンス』で提供されています。このアセットをご利用される場合は、『キャラクター利用のガイドライン』も併せてご確認ください。

 - PhotonCloud, Unity , , , , ,

広告

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

  関連記事

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~アニメーションの同期~

目次1 前回の記事の変更2 Photon Animator Viewの追加3 o …

Unityで作ったアプリをケーブルでAndroid実機で動かす方法

個人でUnityを使って作ったゲームを実機で動作するのかを試したい時ってあります …

Unity5!インストールしてから起動までの流れ!~アカウント登録~

前回の記事でUnity5のダウンロードからインストールまで紹介したと思います。 …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~同期されるオブジョクトの生成~

前回の記事でサーバーへの接続を行いました。 今回は、オンラインで同期されるゲーム …

Unity Adsの使い方・導入方法~Unityで作ったゲームで広告収入~

今回は、Unity Adsの使い方・導入方法を書いていきます。   目 …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~サーバーへの接続~

前回の記事でPhotonCloudに繋がっている事が確実にわかったと思います。 …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~ゲームスタートボタン・リセットボタンの設置~

前回までで、ゲームのシステムがほぼ出来ました。 自機を動かす事、敵を生成する事、 …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~細かな設定~

前回までで、だいたいのゲームシステムは出来たいと思います。 今回は、細かな設定を …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~ソースファイルの作成とゲームオブジェクトへの追加~

前回の記事で AssetStoreの使い方を書いたと思います。 今回から、少しだ …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~導入編~

今回から数回に分けて、UnityとPhotonCloudを使って、リアルタイムオ …