public void Drop() { player.CmdRemoveItemAuthority(item_network_identity); Debug.Log("ATTEMPT TO REMOVE AUTHORITY: EXPECTED = False, RESULT = " + item_network_identity.hasAuthority.ToString()); player.CmdSetHolding(false, ""); player.CmdSetItemBeingHeld(false, item_network_identity); isBeingHeld = false; player.item = null; var colliders = GetComponents <Collider>().ToList(); var trigger_size = Vector3.zero; colliders.ForEach(collider => { if (!collider.isTrigger) { collider.enabled = true; } else { collider.enabled = true; trigger_size = collider.bounds.size; collider.enabled = false; } }); rb.isKinematic = false; rb.constraints = RigidbodyConstraints.None; rb.useGravity = true; var drop_position = Vector3.zero; var isUsingItem = player.Ani.GetBool("UsingItem"); if (isUsingItem) { //DROP ITEM INFRONT OF PLAYER var front_drop_position = trigger_size; front_drop_position.x = 0; front_drop_position.y = 0; front_drop_position.z = front_drop_position.z * DropItemOffset; drop_position = player.transform.TransformPoint(front_drop_position); } else { //DROP ITEM ON SIDE OF PLAYER var side_drop_position = trigger_size; side_drop_position.x = side_drop_position.x * DropItemOffset; side_drop_position.y = 0; side_drop_position.z = 0; drop_position = player.transform.TransformPoint(side_drop_position); } drop_position.y = transform.position.y; //var drop_position = player.HoldingItemPosition.position; //trigger_size.y = 0; //trigger_size.x = 0; //trigger_size.z = -trigger_size.z; //drop_position += trigger_size * DropItemOffset; RaycastHit hit; if (Physics.Raycast(transform.position, -Vector3.up, out hit)) { //PUT THE ITEM ON THE GROUND drop_position.y -= hit.distance; } rb.transform.position = (drop_position); //rb.MovePosition(drop_position); rb.velocity = -Vector3.up * DropItemPower; //rb.MovePosition(drop_position); player = null; //REMOVE REFRENCE TO PLAYER }