UnityでPhoton Unity Networking 2(PUN2)を使った簡単なオンラインゲーム開発では、複雑な例題を理解する前に、基本的な同期生成の仕組みを押さえることが重要です。この記事では、スペースキーを押すとCUBEが生成されるシンプルな例を通して、オンライン上でのオブジェクト生成の基本を解説します。
PUN2でのオブジェクト生成の基本
通常のInstantiate関数はローカルでのみオブジェクトを生成します。PUN2を使用する場合は、PhotonNetwork.Instantiateを使うことで、ネットワーク上の全プレイヤーに同じオブジェクトを生成させることができます。
例えば、スペースキーを押したときにCUBEを生成する場合は以下のように書きます。
public GameObject ball;
void Update() {
if(Input.GetKeyDown(KeyCode.Space)) {
PhotonNetwork.Instantiate(ball.name, new Vector3(2,5,0), Quaternion.identity);
}
}
PhotonNetwork.Instantiateのポイント
PhotonNetwork.Instantiateは、指定したPrefabをネットワーク上で同期生成します。PrefabはResourcesフォルダ内に置く必要があります。これにより、他のプレイヤーの画面にも同じCUBEが生成されます。
ローカルのInstantiateとは異なり、ネットワークIDが自動で割り当てられ、各プレイヤー間で同期が取れるようになります。
簡単な実装手順
1. Resourcesフォルダを作成し、CUBEのPrefabを配置する。
2. 上記のスクリプトをアタッチしたGameObjectをシーンに配置。
3. PUN2のPhotonServerSettingsを設定し、ルームに接続。
これでスペースキーを押すとCUBEが生成され、ネットワーク上で全員に反映されます。
まとめ
PUN2での簡単なオンライン生成は、PhotonNetwork.Instantiateを使うことで実現可能です。複雑なサーバー時刻や同期の仕組みに入る前に、この基本を押さえることで、オンラインゲームの動作確認やテストがスムーズになります。


コメント