Search Unity

  1. Click here to see what's on sale for the "Best of Super Sale" on the Asset Store
    Dismiss Notice
  2. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Rendering AI view area taking obstacles into consideration

Discussion in 'Editor & General Support' started by Jason-H, May 10, 2014.

  1. Jason-H


    Nov 5, 2010
    Hi, I’m trying to create a view spectrum for some AI characters similar to that of the old game Commandos. I’ve found a good example of someone doing the same within Unity at the link below however this solution seems overly complicated and I was wondering whether there is an easier way of doing it?

    My basic understanding of his system after reading the comments can be broken down into 3 steps.

    1. First he finds all the corner points of walls/buildings that cannot be seen through and then considering where the eye position is he creates quads based on whether the corners are visible (I assume with raycasts). The first vertex of the quad is at the first corner visible to the eye, the second is at the next visible corner, the third and fourth are points at the same angle as the previous two points but further away from the eye to create the area of the quad.

    2. A simple triangle is rendered as the eye’s view.

    3. Finally a shader has been set up whereby the eye’s view triangle is not displayed if hidden behind the generated quads that were made in step 1.

    Is there a simpler way to set this up? Or if this definitely is the best way, do you have any extra tips/considerations I might need to think about?

    Extra notes:

    - This will be a mobile game so processing speed needs to be considered. This method would need new triangles to be generated every frame as my AI characters (and their eye) will be moving / patrolling.

    - My obstacles will be fairly simple - mainly cuboids (rectangles).

    - If it helps, the rest of Leopotam Beast’s process of this is somewhat documented on his blog under the tag ‘commandos’ (open in chrome for english translations):

    Unity Answers post:
    Last edited: May 10, 2014