Moving RigidBody2D between two points
I am creating a platform game and I am trying to make moving platforms for my game. Basically I want the platforms to move between two points at a certain speed. For other objects I have been using an array containing "PatrolPoints" and used the Vector2.MoveTowards() function. However for these moving platforms has kinematic rigidbodies attached to them with the interpolation setting. It is very important that the platforms reach the points exactly. Is there any way I can use something similar to MoveTowards to move these platforms?
Any help is much appreciated, I am open to any kind of response
Answer by MelvMay · May 04, 2016 at 02:31 PM
You use Rigidbody2D.MovePosition in combination with Vector2.Lerp (the position) to move a Rigidbody2D. You should only do this once per fixed-update and let interpolation interpolate per-frame.
Thank you for your reply, can you give me a short example in code?
void $$anonymous$$oveBody (Rigidbody2D body, Vector2 from, Vector2 to, float time)
{
body.$$anonymous$$ovePosition (Vector2.Lerp (from, to, time));
}
You can call this in the FixedUpdate callback. You just need to know the From/To and the time (0-1). You can just exchange this for Vector2.$$anonymous$$oveTowards as well because they're essentially the same function as the doco explains.
How can I do this and still have the platform moving at the same speed all the time? I tried your code but the platform moves fast at first but slows down as it approaches the target
Your answer
Follow this Question
Related Questions
Move GameObject with attached Rigidbody2D between two points 1 Answer
How to move rigidbodies with 2D Character controller (No rigidbody) 1 Answer
How can I slow the movement of a single rigidbody2D? 2 Answers
(2D) Rigidbody slides a bit through Box Collider 1 Answer
Spawned objects won't stop moving after instantiating. 2D Top-Down 1 Answer