Can this be rewitten to control axis locally instead of globally?

Here is the Code:

rigidbody.rotation = Quaternion.Euler(rigidbody.velocity.z * tilt2, rigidbody.rotation.eulerAngles.y, rigidbody.velocity.x * tilt);

This code currently is controlling tilt/bank of my player controller through its rigidbody. It works great but only on global axis. Is there a way to write this code out so it gives me same control but on the local axis?

I’ve tried this:

rigidbody.rotation = Quaternion.Euler(transform.TransformDirection (rigidbody.velocity.z * tilt2, rigidbody.rotation.eulerAngles.y, rigidbody.velocity.x * tilt));

… No dice!

Entire code looks like:

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary
{
	public float xMin, xMax, zMin, zMax;	
}

public class PlayerController : MonoBehaviour 
{
	// Places specific attributes in Player Inspector
	public float speed;
	public float tilt;
	public float tilt2;
	public float RotateSpeed = 30f;
	public Boundary boundary;
	
	
	void FixedUpdate ()
	{
		// Boat X and Z axis movement
		float moveHorizontal = Input.GetAxis ("Horizontal");
		float moveVertical = Input.GetAxis ("Vertical");
				
		Vector3 movement = new Vector3(-moveVertical, 0.0f, moveHorizontal);
		movement = transform.TransformDirection(movement);
		rigidbody.velocity = movement * speed;
//		rigidbody.velocity.x(moveHorizontal * speed);
//		rigidbody.velocity.z(moveVertical * speed);
		
				
		// Restrains Boat movement
		rigidbody.position = new Vector3 
			(
				Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
				0.0f, 
				Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
				);
		
		// Boat Tilt and Bank
		rigidbody.rotation = Quaternion.Euler(rigidbody.velocity.z * tilt2, rigidbody.rotation.eulerAngles.y, rigidbody.velocity.x * tilt);
//		rigidbody.rotation = Quaternion.Euler(transform.TransformDirection (rigidbody.velocity.z * tilt2, rigidbody.rotation.eulerAngles.y, rigidbody.velocity.x * tilt));
				
		
		 //Boat Y axis Turn/Rotation		
        if (Input.GetKey(KeyCode.Z))
          transform.Rotate(-Vector3.up * RotateSpeed * Time.deltaTime);
		else if (Input.GetKey(KeyCode.C))
          transform.Rotate(Vector3.up * RotateSpeed * Time.deltaTime);
	}
}

Figured it out… Hopefully by posting my own answer it’ll help someone else.

New Code looks like:

rigidbody.rotation = Quaternion.Euler(transform.InverseTransformDirection(rigidbody.velocity).z * tilt2, rigidbody.rotation.eulerAngles.y, transform.InverseTransformDirection(rigidbody.velocity).x * tilt);

Dueces!!