void TakeOutFromBackPack(int i) { if (!carrying) { carrying = true; carriedObject = backPack[i]; backPack[i] = null; carriedObject.SetActive(true); ShowBackPackItem(); carriedObject.transform.position = Camera.main.transform.position + Camera.main.transform.forward * holdDistance; if (carriedObject.gameObject.GetComponent <GroupHolder>() != null) { positionSnapMode = PositionSnapMode.Off; UpdateModeText(); } } }
void Update() { HandleCarry(); if (Input.GetButtonDown("PosSnap")) { positionSnapMode = positionSnapMode.Next(); UpdateModeText(); } if (controller.isMultiplayer && backPackText.Length > 0) { foreach (var item in backPackText) { item.gameObject.SetActive(false); } backPackText = new Text[0]; } }
void PickupAnObject() { var ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2)); RaycastHit hit; if (Physics.Raycast(ray, out hit, maxDistance)) { var p = hit.collider.GetComponent <Pickupable>(); if (p != null && p.gameObject.transform.parent != null) { p = p.gameObject.transform.parent.GetComponent <Pickupable>(); } var g = hit.collider.GetComponent <ResourceGenerator>(); if (p != null && p.owner != -1) { return; } if (p != null && p.owner == -1) { if (controller.isMultiplayer) { var ret = net.Propose("p" + p.id, string.Format("Pickup {0} {1}", net.myid, p.id)); if (!ret) { return; } } carriedObject = p.gameObject; p.owner = net.myid; } if (g != null) { if (!g.unlimited && g.remain <= 0) { return; } int id; id = nextid++; if (controller.isMultiplayer) { var ret = net.Propose("t" + g.id, string.Format("TakeOne {0} {1} {2}", net.myid, g.id, id)); if (!ret) { return; } } g.TakeOne(); carriedObject = Instantiate(g.generatedObject, g.gameObject.transform.position, g.gameObject.transform.rotation) as GameObject; if (g.removeIfNone && g.ShouldDisappear()) { Destroy(hit.collider.gameObject); } if (controller.isMultiplayer) { carriedObject.GetComponent <Pickupable>().id = id; carriedObject.GetComponent <Pickupable>().owner = net.myid; } } if (p != null && p.owner == net.myid || g != null) { carrying = true; if (carriedObject.GetComponent <Rigidbody>() != null) { carriedObject.GetComponent <Rigidbody>().isKinematic = true; } if (carriedObject.GetComponent <Collider>() != null) { carriedObject.GetComponent <Collider>().isTrigger = true; } if (carriedObject.gameObject.GetComponent <GroupHolder>() != null) { positionSnapMode = PositionSnapMode.Off; UpdateModeText(); } } } }