- Home /
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!
Take the distance vector from target, if too close, normalise and multiply by $$anonymous$$imum distance. Place there.
That's as much as anyone can help without seeing your code
Answer by Blackup · Apr 10, 2015 at 04:46 PM
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.
Answer by Posthuman-Wizard · Apr 12, 2015 at 03:26 PM
Thanks NoseKills and Blackup, that those answers were very helpful. I have it doing what I want it to do now. :)
Your answer
Follow this Question
Related Questions
Setting target position in Vector3.MoveTowards 2 Answers
Distance won't work 1 Answer
distance to variable object 1 Answer
how do i fix my script in the content below? 0 Answers
transform.position = new Vector 3 NOT moving to correct position? 1 Answer