Несколько замечаний, во-первых, нет нужды создавать отдельный вектор для положения мышки, можно сразу передавать Input.mousePosition. Во-вторых, по умолчанию maxDistance у Physics.Raycast это float.PositiveInfinity, ваш Mathf.Infinity можно убрать. В-третьих, для проверки тэгов лучше использовать
CompareTag, он работает чуть быстрее.
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.transform.CompareTag("PickUp"))
{
Destroy(hit.transform.gameObject);
}
}
}
}
}
Касаемо вашей проблемы, я бы предложил вам подключиться дебаггером и проверить, что рейкасты попадают в объект, возможно, у вас слишком маленький коллайдер и луч банально по нему не попадает. Если это так, то вам надо либо увеличить коллайдер, либо использовать
Physics.SphereCast.