现在,我有一个多人游戏,玩家向其他有一定气泡的玩家发射射弹。一旦球员失去了所有的气泡,他们便会失败。
我之前遇到的问题是,在一个屏幕上,第一个玩家可以射出第二个玩家的气泡,但不会弹出第二个玩家屏幕上的所有气泡,所以我试图通过网络同步它不知。
我看到的问题是NetworkServer.Destroy需要找到你打算通过其NetworkIdentity销毁的GameObject,但只允许root Player GameObject在其上有NetworkIdentity组件。我可以同步销毁玩家子对象的最佳方法是什么?
答案 0 :(得分:0)
https://unity3d.com/fr/learn/tutorials/topics/multiplayer-networking/课程与您描述的游戏非常相似。它有一个子弹脚本附加到发射的子弹。如果子弹碰到某个东西,它会检查它是否是玩家,并对其施加伤害(玩家预制件上附有Health
脚本)。
using UnityEngine;
using System.Collections;
public class Bullet : MonoBehaviour {
void OnCollisionEnter(Collision collision)
{
var hit = collision.gameObject;
/* Code below is from the original example
var health = hit.GetComponent<Health>();
if (health != null)
{
health.TakeDamage(10);
}*/
var bubble = hit.GetComponent<BubbleBehavior>();
if (bubble != null)
{
bubble.Popped(); // Implement a Popped function doing the magic
}
Destroy(gameObject);
}
}
在你的情况下,你可以这样做,但不是检查被触摸的物体是否是一个玩家,只需检查它是否是一个气泡,并从触摸的气泡做任何你想做的事。
在原始示例中,他们同步了运行状况(它是&#34; SyncVar&#34;),在您的情况下,您可以同步剩余的气泡数。