Reposition to minimum distance from target

Hey all; I was wondering what the cleanest way of repositioning one object a minimum distance away from another object was. The way I’ve been approaching this thus far is tinkering with Vector3.MoveTowards() (i.e., Vector3.MoveTowards(selfTransform.position, targetTransform.position, Distance) and doing something with a minimum distance cap of 1f, but I’m kinda stumped. Any suggestions would be greatly appreciated!

assuming you’re not interested in physics (Collission, velocity and all that)…NoseKills Comment above is valid.

First you get the direction from the target to self(transform).

Vector3 Direction = (transform.position - target.position).normalized;

Normalized gives you the vector at a standard distance of 1. I like to think of this as a “direction”.
Now multiply that direction by your minimum distance, and add the result to the target position, This gives you the coordinates for the minimum distance…

transform.position = target.position + Direction * MinimumDistance;

What this does is to add the movement (of minimum distance) along the direction, to the current coordinates of the target… and places self(transform) at that point.

NOTE: This alone, will ALWAYS place the transform at the minimum distance… so if you want the transform to move around freely beyond the minimum, then you should do some distance checks first, and see if the minimum placement above is even necessary.

Thanks NoseKills and Blackup, that those answers were very helpful. I have it doing what I want it to do now. :slight_smile: