However it only appears when you enter the jungle.
Fogend will not work since that will be globally, should i use a local script to change the fogend when a player enters the area?
If you don’t need to check layered regions (e.g. areas in multiple floors), my personal suggestion here is to downcast (raycast downward) every frame and check if the raycast hits an area part. If it does and the current area marker hasn’t been updated then you can do so and apply effects.
Rough pseudocode:
local lastArea = "N/A"
Heartbeat:Connect
raycast(RootPartPosition, Vector3.new(0, -10, 0), WhitelistAreaBricks)
if raycast_hit(area_part)
local area = area_part:GetAttribute("Area")
if area ~= lastArea then
lastArea = area
applyEffect_showAreaOnGui
If you have 3D regions to check over then spatial queries would be more appropriate but it tends to also be more expensive to cast so I wouldn’t recommend it unless you have deeply complex spatial locations to check over. Raycasts are highly inexpensive when short so they should be your go-to.