Hello everybody !
I feel like this is one of those problems where a solution is really obvious, but you’ll find it the day after.
I am trying to make a hoverboard-like movement ;
If the object goes forward, it is leaning forward, if it goes left, it leans left, etc… It can’t go up or down. It can be looking anywhere on the xz plane, and going anywhere on a xz plane. It doesn’t necessarily goes where it’s facing.
so, the direction where the object is looking is set by transform.eulerAngle.y, and the leaning is set by x and z.
And that’s it, I’m sure somebody already made this as it seems really simple, but I just couldn’t get it to work.
EDIT Here is my solution.
using UnityEngine;
using System.Collections;
public class LeanTowards : MonoBehaviour {
public float angle=10;
public Vector3 dir;
public Transform target;
float z=0;
float zVelocity=0;
float x=0;
float xVelocity=0;
void Update()
{
//Moving
transform.position+=dir*Time.deltaTime;
//smoothing the movement
z=Mathf.SmoothDamp(z,dir.z,ref zVelocity,0.2f);
x=Mathf.SmoothDamp(x,dir.x,ref xVelocity,0.2f);
//look at the target
transform.LookAt(target);
//leaning towards the movement direction
transform.Rotate(new Vector3(z,0,-x)*angle,Space.World);
}
}