예제 #1
0
        private void PickupItem()
        {
            _itemToPickup.GetComponent <Rigidbody>().isKinematic = true;                           // Объект не должен падать
            PickableItem.ObjectType objectType = _itemToPickup.GetComponent <ItemToPickup>().Type; // определение типа подбираемого объекта
            switch (objectType)                                                                    // размещение объекта в инвентаре исходя из типа - RedType с индексом 0, GreenType с 1 и BlueType с 2
            {
            case PickableItem.ObjectType.RedType:
                _itemToPickup.transform.position = ItemSlot[0].position;
                _slotObjects[0] = _itemToPickup;
                break;

            case PickableItem.ObjectType.GreenType:
                _itemToPickup.transform.position = ItemSlot[1].position;
                _slotObjects[1] = _itemToPickup;
                break;

            case PickableItem.ObjectType.BlueType:
                _itemToPickup.transform.position = ItemSlot[2].position;
                _slotObjects[2] = _itemToPickup;
                break;
            }
            _itemToPickup.GetComponent <ItemToPickup>().IsPicked = true; // смена статуса объекта на "Подобран"

            OnItemPickup.Invoke();
            PostSender.SendPostRequest(_postURL, _postAPIKey, _itemToPickup.GetComponent <ItemToPickup>().ID, "Item has been picked up!");

            _itemToPickup = null;
        }
예제 #2
0
        private void DropItem()
        {
            _itemToDrop.GetComponent <Rigidbody>().isKinematic = false;                          // возврат физических свойств
            PickableItem.ObjectType objectType = _itemToDrop.GetComponent <ItemToPickup>().Type; // определение типа сбрасываемого объекта
            switch (objectType)                                                                  // освобождение слота в инвентаре исходя из типа сбрасываемого объекта
            {
            case PickableItem.ObjectType.RedType:
                _slotObjects[0] = null;
                break;

            case PickableItem.ObjectType.GreenType:
                _slotObjects[1] = null;
                break;

            case PickableItem.ObjectType.BlueType:
                _slotObjects[2] = null;
                break;
            }
            _itemToDrop.GetComponent <ItemToPickup>().IsPicked = false; // смена статуса объекта на "не подобран"

            OnItemDrop.Invoke();
            PostSender.SendPostRequest(_postURL, _postAPIKey, _itemToDrop.GetComponent <ItemToPickup>().ID, "Item has been dropped!");

            _itemToDrop = null;
        }
예제 #3
0
        private void OnEnable()
        {
            _dragNDrop = FindObjectOfType <DragNDrop>();
            _inventory = FindObjectOfType <InventoryClass>();

            // заполнение полей объекта из scriptable object'а
            // физические свойства можно было указать, исходя из свойств объекта, указанных в ТЗ

            gameObject.AddComponent <MeshFilter>();
            gameObject.AddComponent <MeshRenderer>();
            gameObject.AddComponent <CapsuleCollider>();
            gameObject.AddComponent <Rigidbody>();

            gameObject.GetComponent <MeshFilter>().mesh       = _item.Model.GetComponent <MeshFilter>().sharedMesh;
            gameObject.GetComponent <MeshRenderer>().material = _item.Model.GetComponent <MeshRenderer>().sharedMaterial;

            gameObject.GetComponent <CapsuleCollider>().center    = _item.Model.GetComponent <CapsuleCollider>().center;
            gameObject.GetComponent <CapsuleCollider>().radius    = _item.Model.GetComponent <CapsuleCollider>().radius;
            gameObject.GetComponent <CapsuleCollider>().height    = _item.Model.GetComponent <CapsuleCollider>().height;
            gameObject.GetComponent <CapsuleCollider>().direction = _item.Model.GetComponent <CapsuleCollider>().direction;
            gameObject.GetComponent <CapsuleCollider>().material  = _item.Model.GetComponent <CapsuleCollider>().sharedMaterial;

            // gameObject.GetComponent<Rigidbody>().mass = _item.Model.GetComponent<Rigidbody>().mass; // на случай определения массы в модели
            gameObject.GetComponent <Rigidbody>().mass                   = _item.Weight;
            gameObject.GetComponent <Rigidbody>().drag                   = _item.Model.GetComponent <Rigidbody>().drag;
            gameObject.GetComponent <Rigidbody>().angularDrag            = _item.Model.GetComponent <Rigidbody>().angularDrag;
            gameObject.GetComponent <Rigidbody>().useGravity             = _item.Model.GetComponent <Rigidbody>().useGravity;
            gameObject.GetComponent <Rigidbody>().isKinematic            = _item.Model.GetComponent <Rigidbody>().isKinematic;
            gameObject.GetComponent <Rigidbody>().interpolation          = _item.Model.GetComponent <Rigidbody>().interpolation;
            gameObject.GetComponent <Rigidbody>().collisionDetectionMode = _item.Model.GetComponent <Rigidbody>().collisionDetectionMode;

            _id     = _item.ID;
            _name   = _item.Name;
            _weight = _item.Weight;
            _type   = _item.Type;
        }