Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by jt78 · Dec 20, 2011 at 11:27 PM · rotationrigidbodypathtankaddtorque

Tank (Rigidbody) Pathfinding movement

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

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Owen-Reynolds · Dec 21, 2011 at 06:30 AM

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.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

AddTorque to rotate rigidbody to look at a point 3 Answers

how to rotate a Rigidbody to a target rotation using Rigidbody.AddTorque() 0 Answers

How to have a cube to fall on fixed rotation? 1 Answer

How to make a ball capable of rolling around a loop the loop? 1 Answer

Issue with Rotation behaviour of PID Controller when rotating to look at mouse position 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges