我有一个可以装备多种武器的玩家对象。装备武器时,其变换的父级设置为它的手。我已经搞砸了一段时间,无法让它对主机和客户端都有效。现在我正在尝试在服务器上装备武器,并告诉所有客户端设置他们的父母变换。
public NetworkInstanceId weaponNetId;
[Command]
void Cmd_EquipWeapon()
{
var weaponObject = Instantiate (Resources.Load ("Gun"),
hand.position,
Quaternion.Euler (0f, 0f, 0f)) as GameObject;
weaponObject.transform.parent = hand;
NetworkServer.Spawn (weaponObject);
//set equipped weapon
var weapon = weaponObject.GetComponent<Weapon> () as Weapon;
weaponNetId = weaponObject.GetComponent<NetworkIdentity> ().netId;
Rpc_SetParentGameobject (weaponNetId);
}
[ClientRpc]
public void Rpc_SetParentGameobject(NetworkInstanceId netID)
{
weaponNetId = netId;
}
在更新中,我正在更新武器变换
void Update () {
// set child weapon tranform on clients
if (!isServer) {
if (weaponNetId.Value != 0 && !armed) {
GameObject child = NetworkServer.FindLocalObject (weaponNetId);
if (child != null) {
child.transform.parent = hand;
}
}
}
我知道这不是最优化的方法。但现在我只是想让它以任何可能的方式工作,然后努力调整它。似乎这应该是一个简单的任务。