# change angle towards direction

I want to deflect/reflect my bulltet, so I used rays to get the incident ray , the normal and made a function that reflects the ray and returns a new vector3. I got the new vector but I don’t know how to make the bullet have the same direction of the vector (blue ray). How can I do so? I tried Quaternion.FromToRotation and other functions and they didn’t worked.

Here is the code to understand more what’s happening:

``````using UnityEngine;
using System.Collections;

public class BulletBehavior2D : MonoBehaviour {
public bool isEnabled;
public float speed;
public bool bounceOff;
public float rayLength;
private Ray2D ray;
private RaycastHit2D hit;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

ray = new Ray2D (new Vector2 (transform.position.x, transform.position.y), new Vector2 (transform.right.x, transform.right.y));
RaycastHit2D hit;
Debug.DrawRay (ray.origin, ray.direction * rayLength);
hit = Physics2D.Raycast (ray.origin, ray.direction, rayLength);

if (isEnabled) {
transform.position += transform.right *  Time.deltaTime * speed;
}
if (hit != null) {
Debug.DrawRay (hit.point, hit.normal * rayLength,Color.red);
Vector3 reflect = BulletBehavior2D.Reflect(transform.right,hit.normal);
Debug.DrawRay (hit.point, reflect * rayLength ,Color.blue);
}

}

public static Vector3 Reflect(Vector3 vector, Vector3 normal)
{
return 2.0f * (normal * -Vector3.Dot(vector, normal)) + vector;
}

void OnTriggerEnter2D(Collider2D coll) {

Vector3 reflect = BulletBehavior2D.Reflect(transform.right,hit.normal);
Vector2 rf = reflect;
/**here the reflection and change of angle should occur ! **/

}
}
``````

Well, you have the direction vector of the bullet prior to bouncing off the surface, as well as the calculated new vector after it’s deflected.

Being a little lazy and taking a note from this older question, you should be able to generate a Quaternion rotation by doing something like this:

``````Quaternion angleAdjustment = Quaternion.FromToRotation(currentDirection, reflectedDirection);