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; }
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; }
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; }