enemy AI avoiding collision

Here is my logic for enemy AI in theory:

alt text

Right now I have everything except the sending out raycasts at different angles. I can best describe it as wanting to rotate the ray with the pivot at the enemy.

var ray = new Ray(transform.position, transform.TransformDirection(Vector3.forward));
Debug.DrawLine(ray.origin, ray.origin + ray.direction * dist, Color.blue);

The above code will draw the white line from the above image, but how can I offset the directions by like 15 degrees, for example? Is there something different you would recommend?

A raycast is “fired” through a point. In your case, you’re firing it through “in front of me,” which makes it go directly ahead. A really cheesy way to angle a ray is to fire it through a point off to the side. The length isn’t important. In this case, 4 ahead and 1 left will hit the wall 1 unit left (whatever angle that is):

Vector3 leftSome = transform.forward*4 - transform.right*1;
 ... rayCast(transform.position, leftSome ..... )

Vector leftMore =  transform.forward*4 - transform.right*2.5f;
// another raycast through left more

It won’t give you an extra angle, but close enough (of course, 1 forward and 1 left will be 45 degrees.)

If you really want an exact angle, you can rotate transform.forward using a Quaternion:

Vector3 left15Degs = Quaternion.Euler(0,-15,0) * transform.forward;

The first term creates a “rotation” -15 degrees around Y, and applies it to your forward.