so i got this interaction code and sometimes it doesn't really work for some reason...
public void itemInteraction()
{
Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
if (Physics.Raycast(ray, out hit, 3f, itemInteractiableMask | interactiableMask))
{
int hitLayer = hit.collider.gameObject.layer;
if (Input.GetKeyDown(KeyCode.E))
{
if ((interactiableMask.value & (1 << hitLayer)) != 0)
{
interactable = hit.collider.gameObject;
interactable.SetActive(false);
}
else if ((itemInteractiableMask.value & (1 << hitLayer)) != 0)
{
interactableRb = hit.collider.GetComponent<Rigidbody>();
interactbleItem = hit.collider.gameObject;
if (isHeld == false)
{
Debug.Log("picked up");
isHeld = true;
itemInteractionObject.localPosition = new Vector3(0.25f, -0.5f, 2f);
interactbleItem.transform.SetParent(itemInteractionObject.transform);
interactableRb.useGravity = false;
}
else
{
Debug.Log("dropped");
isHeld = false;
interactableRb.useGravity = true;
interactableRb.AddForce(velocity, ForceMode.Impulse);
interactbleItem.transform.SetParent(null);
}
}
}
}
}