アニメーション同期しないのは良くわかりません。上記修正で「ルームホストが変更された場合など、例外的に同期しないケースがある」という問題が解決しますが、これ以外の例外的な要素があるとは思えないので…。
> 片方が退出すると、また新しくゾンビが生成されてしまうのですが、これは仕方ないのでしょうか?
これについては Assets/script/ApperScript.cs にある敵NPC出現処理について、
「ホスト」がどのクライアントであっても、敵の最大出現数を一定に保つ
http://bit.ly/2tvPU2M
のページに記載されているような「各クライアントで敵の最大出現数を一定に保つ」ように処理を加えなければなりません(そうしないと AppearScript.numberOfEnemys がホスト以外一定にならないので)
よって、さらに手順として以下の内容を組み込む必要があります。
1. zombieAppearance (4) に MonobitView コンポーネントを加える
2. AppearScript.cs について、MonobitEngine.MonoBehaviour を基底クラスに設定する
public class AppearScript : MonobitEngine.MonoBehaviour
3. AppearScript クラスに MunRPC の受信メソッドを追加する
[MunRPC]
void SyncNumberOfEnemyes(int number)
{
numberOfEnemys = number;
}
4. AppearEnemy() メソッドに、monobitView.RPC() メソッドで 3. に定義した受信メソッドに RPC を飛ばす。
// 敵出現メソッド
void AppearEnemy()
{
// 出現させる敵をランダムに選ぶ
var randomValue = Random.Range(0, enemys.Length);
var randomenemys = enemys[randomValue];
// 敵の向きをランダムに決定
var randomRotationY = Random.value * 360f;
//GameObject.Instantiate(enemys[randomValue], transform.position, Quaternion.Euler(0f, randomRotationY, 0f));
GameObject newNPC = MonobitEngine.MonobitNetwork.Instantiate(randomenemys.name, transform.position, Quaternion.Euler(0f , randomRotationY, 0f), 0, null, true, false, true);
numberOfEnemys++;
monobitView.RPC("SyncNumberOfEnemyes", MonobitEngine.MonobitTargets.All, numberOfEnemys);
elapsedTime = 0f;
}