Question by
PRZ3M3K · Jan 08, 2017 at 09:33 AM ·
unity 5multiplayerparenting
Error with parenting spawned weapon on client side
Hi guys!
After week "having fun" with parenting I gave up. So my game is TPS, where i have two weapons: rifle and pistol. In game player will have option to change it. On the host side everything works beautiful, but on client no :( . Objects, that i spawned, aren't parented. Probably weapon change part also wouldn't going to work.
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class bodyanimcontroler : NetworkBehaviour {
Animator animator;
int indeks;
float rotation;
float xRotate;
public static bool busy = false;
public static int direction = 1;
public GameObject secondary;
public Transform main;
public GameObject holder;
GameObject sec;
GameObject prim;
public GameObject pist;
public GameObject rifle;
// Use this for initialization
void Start ()
{
animator = GetComponent<Animator>();
Cmdspawngun();
}
[Command]
public void Cmdspawngun()
{
prim = (GameObject)Instantiate(rifle, holder.transform.position, holder.transform.rotation);
sec = (GameObject)Instantiate(pist, secondary.transform.position, secondary.transform.rotation);
prim.transform.SetParent(holder.transform);
sec.transform.SetParent(secondary.transform);
NetworkServer.Spawn(sec);
NetworkServer.Spawn(prim);
}
// Update is called once per frame
void Update()
{
if (Input.GetKey("r") && busy == false)
{
StartCoroutine(Reload());
}
xRotate = Input.GetAxis("Mouse Y") * CameraControl.mouseSens;
float oldrot = rotation;
rotation = xRotate + rotation;
if (rotation > -60 && rotation < 60)
{
animator.SetFloat("look", rotation);
}
else
{
rotation = oldrot;
}
if (Input.GetButtonDown("Change weapon") && busy == false)
{
StartCoroutine(change());
}
}
IEnumerator change()
{
busy = true;
animator.SetFloat("chg", -direction);
animator.SetTrigger("change");
yield return new WaitForSeconds(0.25f);
if (direction == 1)
{
prim.transform.parent = main.transform;
prim.transform.position = main.transform.position;
prim.transform.rotation = main.transform.rotation;
}
else
{
sec.transform.parent = secondary.transform;
sec.transform.position = secondary.transform.position;
sec.transform.rotation = secondary.transform.rotation;
}
yield return new WaitForSeconds(0.5f);
if (direction == 1)
{
sec.transform.parent = holder.transform;
sec.transform.position = holder.transform.position;
sec.transform.rotation = holder.transform.rotation;
}
else
{
prim.transform.parent = holder.transform;
prim.transform.position = holder.transform.position;
prim.transform.rotation = holder.transform.rotation;
}
yield return new WaitForSeconds(0.25f);
direction *= -1;
busy = false;
}
IEnumerator Reload()
{
busy = true;
animator.SetTrigger("reload");
yield return new WaitForSeconds(1.1f);
busy = false;
}
}
Please help me guys. i haven't any ideas...
Comment