# enemy AI avoiding collision

Here is my logic for enemy AI in theory:

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.