# Tank (Rigidbody) Pathfinding movement

 0 Hi, I'm working on a RTS game and just implemented the A* pathfinding method into the game (I''m using the Javascript API) and the pathfinding itself works great. My problem is how to get the tank to move between waypoints.Basically, every FixedUpdate I have: ``````var dir : Vector3 = (currentPath.vectorPath[currentWaypoint] - transform.position).normalized; dir *= speed * Time.fixedDeltaTime; transform.Translate(dir); ``````And I'm trying to workout how to turn that into Rigidbody code - the drive part is pretty easy and already working (moving forward/backwards) but I just need to know how to use AddTorque to make it turn towards the next waypoint in a realistic way.Also, I have the mass, drag and drive force of the tank all worked out - any ideas what good values for the turning force (I know that's simplifying it but I don't mind as long as it's realistic) and angular drag?Thanks! - James more ▼ asked Dec 20 '11 at 11:27 PM jt78 18 ● 4 ● 5 ● 8 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 Physics-wise, AddTorque gives a push and lets momentum spin it. Seems to make more sense, for a tank, to turn at a constant speed and only go directly forwards. This is what I use for "tanks": ``````Quaternion wantFace = Quaternion.LookRotation(target - transform.position); transform.rotation = Quaternion.RotateTowards(transform.rotation, wantFace, 90 * Time.fixedDeltaTime); // move towards destination at speed (but don't change fall speed): Vector3 newVel = Vector3.zero; // only move if we are close to correct angle: if(Quaternion.Angle(transform.rotation, wantFace)<5) { newVel = transform.forward * spd; } newVel.y = rigidbody.velocity.y // save gravity rigidbody.velocity = newVel; ``````The 90 in rotateTowards is turn speed in degrees/second. The "if angle is close" makes it more robotic-looking. Could easily be a larger angle. For even more fun, go backwards if the angle is past 90 -- gives a cool backup then forwards move.Also, `transform.Translate` isn't using rigidbodies -- it's like dragging it in the Inspector. For rigidbody-based movement, you get to use AddForce, and set friction really high. Unless Godzilla is tossing your tanks around, rigidbodies don't seem to get you much. more ▼ answered Dec 21 '11 at 06:30 AM Owen Reynolds 11.3k ● 1 ● 7 ● 45 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x2166
x1791
x238
x60
x23

asked: Dec 20 '11 at 11:27 PM

Seen: 788 times

Last Updated: Dec 21 '11 at 06:30 AM