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

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

*

  関連記事

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~プロジェクトの作成とUnityの設定~

ゲームを作りたいなぁと思っても、プログラミングって難しそうだし、絵とか3Dモデル …

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

前回の記事で、PhotonCloudをUnityに導入する事が出来たと思います。 …

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

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

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~AssetStoreの使い方とシーンへの追加~

前回の記事 でプロジェクトの作成とUnityの設定をしたと思います。 今回は、A …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~弾の作成とそれのPrefab化~

前回の記事では、宇宙戦闘機を動かすところまでやったと思います。 今回は、その宇宙 …

3Dシューティングゲームを公開

前回までで紹介してきた「プログラミング初心者でも簡単!Unity5で3Dシューテ …

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

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

プログラミング初心者でもゲームが作れる!「Unity5」のインストール方法

今日、アップデートされたばかりの「Unity5」のインストールの方法を紹介してい …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~衝突判定の設定2~

前回の記事の最後で言っていた、敵の弾が宇宙戦闘機に衝突した時の処理を今回書いてい …

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

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