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.
64466-fromto.png

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);
transform.rotation = angleAdjustment * transform.rotation;

Quaternion multiplication order always throws me off, so I apologize if I got the final line backwards; Non-commutative math is never pleasant to work through.

Anyway, with both of the directions in mind, the vectors can be run through a FromToRotation to calculate how to reach the destination vector from the current vector. Then, that value can be multiplied with the current rotation to rotate to the new orientation.

Edit: I understand if it doesn’t work out for you, since you already mentioned you’d given FromToRotation a try, but I’m simply offering my perspective on it in case anything may have been overlooked.