Beispiel #1
0
 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();
         }
     }
 }
Beispiel #2
0
 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];
     }
 }
Beispiel #3
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();
                }
            }
        }
    }