Opening and closing drawers with start and end points

Hey there guys, I’m having a fair bit of trouble with opening and closing drawers, with what i have at the moment when i open and close the drawers, they open and retract at different positions… I don’t know how to better describe this, so i have provided a quick Video demonstration to provide the answer I am looking for.

Video Link:

My current code:

var start : Vector3;
var end : Vector3;
var opening : boolean = false;
var closed : boolean = true;

public var smoothTime : float = 0.1;
public var maxSpeed = 8;
public var openDist = 0.2;
 
function Start ()
{
    start = transform.position;
    closed = true;
}
 
function Update ()
{
    if(opening && closed)
    {
        //transform.position = Vector3.SmoothDamp(origin, origin + transform.forward * openDist, velocity, smoothTime, maxSpeed);
        transform.position = Vector3.Lerp(start, start + transform.forward * openDist, Time.deltaTime * smoothTime);
        closed = false;
        end = transform.position;
    }
    if(!opening && !closed)
    {
        //transform.position = Vector3.SmoothDamp(origin, origin - transform.forward * openDist, velocity, smoothTime, maxSpeed);
        transform.position = Vector3.Lerp(end, end - transform.forward * openDist, Time.deltaTime * smoothTime);
        closed = true;
    }
}

function open ()
{
    opening = !opening;
}

I am trying to achieve a non animated script here, due to I just want to be able to add the script to the drawer and that’s it, not have to make animations for each drawer i want to open/close

Your code is being a mixture of animation handled by lerp feeded with delta time with instantaneous state change handled by opening and closed booleans.
If you just want them to open / close instantaneously on click then resign from lerp and just assign final position, which is for opened state: start + transform.forward * openDist and for closed state: start

If you want animation then the boolean for closed shouldn’t be set immediately inside the first if, but rather after opening time has passed, so you need a time counter for opening / closing animation. When animation is done (counter >= animationTime) make sure to assign final position (to avoid overshooting position) and change the opened boolean state to !opened.