This asset package contains scripts/prefabs to help you build you Canvas based 2D games that need line of sight detection with visible/invisible FOV cones. The asset includes 2 demo scenes one for top-down, one for sidescrolling behavior. The system is designed to be variable in it's performance impact and runs well on mobile as well on PCs.
The project has been developed with Unity 2019.3 but also works with 2019.2. Previous Unity Versions are not supported by the custom editor and the prefabs.
Features:
- Custom Editor for easy setup
- Multiple options to tailor the performance for your target (Mobile/Desktop)
- Highly customizable
- Variable FOV from 1° - 180° degrees
- Variable detection distance
- Automatic rotation from 1° - 180° degrees to the left/right (can stop on detection) with variable speed
- The FOV cone can be set to visible/invisible
- Color for detected/undetected can be set and animated
- Custom sprites for detected/undetected state can be set for the FOV cone
- Multiple tags which trigger detection can be set
- Multiple layers on which the raycast for the line of sight detection is being made can be set
- Raycast only happens when a target object enters the detection radius of the search object
- Detection interval (when the raycast is made) can be set between 0.1 and 5.0 seconds to save on performance
- The density of the rays used for the raycast is variable to save on performance
- The search direction can be toggle from middle to the outside or outside to the middle
- In the editor debug rays can be drawn during gameplay to help debugging gameplay
- Custom Unity Events can be added via the editor when an object is detected or has been lost by detection. The events pass the GameObject of the detector as well as the detected object to easily implement further functions
- Helper function to rotate elements with the FOV cone is included
The code is extensively commented and a pictured pdf documentation is included.
If you encounter bugs, have questions or wishes for the functionality, contact me via the supplied email.