I have a nametag in my game that has AlwaysOnTop enabled, as it looks better that way. I want a way to make the gui invisible if its behind something. I know this is possible as I’ve seen many games with custom nametags that do this.
Puedes hacerlo con un Raycast desde la cámara hacia el BillboardGui. Por ejemplo, toma la posición del Adornee, lanza un Raycast hacia ella y comprueba si golpea otro objeto antes. Si quieres detectar oclusión parcial, haz varios Raycasts hacia diferentes puntos del Billboard y calcula cuántos están bloqueados.
(Imagen generada con IA)
but then I would need to get points of the billboardgui into 3d space and i don’t know how to do that
Podrías hacerlo convirtiendo los puntos del BillboardGui en rayos 3D usando Camera:ViewportPointToRay(). Así no necesitas calcular manualmente las posiciones 3D: tomas las esquinas y el centro del BillboardGui, lanzas un Raycast desde la cámara hacia cada punto y compruebas cuáles están bloqueados. Con eso puedes determinar si está visible o completamente oculto.