Ejemplo simple para interactuar con objetos mirando hacia ellos.
using UnityEngine;
using UnityEngine.InputSystem;
public class Interaccion : MonoBehaviour
{
[SerializeField]
private Camera camara;
[SerializeField]
private InputActionReference interactAction;
[SerializeField]
private float distancia = 3f;
[SerializeField]
private LayerMask interactuables;
void Update()
{
if (!interactAction.action.WasPressedThisFrame())
{
return;
}
Ray rayo = new Ray(
camara.transform.position,
camara.transform.forward
);
if (Physics.Raycast(
rayo,
out RaycastHit hit,
distancia,
interactuables))
{
Debug.Log(
"Interactuando con: " +
hit.collider.name
);
}
}
void OnDrawGizmosSelected()
{
if (camara == null)
{
return;
}
Gizmos.DrawRay(
camara.transform.position,
camara.transform.forward * distancia
);
}
}
Podés reemplazar el Debug.Log por: