Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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
7
Question by dmaxwell · Apr 07, 2010 at 10:00 AM · physicsforcefollowforwardtrain

I want to make a train go round a track using physics?

Hi

I want to create a train and carriages (all independent when needed),I want the physics engine to move them round a track so I can stop start unlink so friction slows them down.

The track will run through a game environment curved and straight sections.

I thought about importing animation ,but the physics engine would give me more control

I need a simple physics model (sphere say) that is given a force along direction but is also fixed in a rail

any ideas?

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

7 Replies

· Add your reply
  • Sort: 
avatar image
4

Answer by swhite · Sep 04, 2010 at 12:11 AM

Seems to me like you could do this the same way a train works (well in a fashion).

Creating your track with collision then create your train model with wheels that would enclose around the track.

Now you could use physics to control your train; keeping gravity and mass on your train will keep it on the track, then applying a force to your train engine over a fixed update until you reach your max desired speed.

The phsyics would then propel your train along the track as long as it wasn't going to fast as if the speed increased to much your train would be removed from the track.

I made a generic little object to play around with that worked fairly well (very rough of course)

alt text

This would be a very 'basic' way to do it and is far from the end all of awesome train mechanics. ;)

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
avatar image
1

Answer by jonas-echterhoff · May 20, 2010 at 10:01 PM

The way I would probably approach this is to use ConfigurableJoints to connect the carriages to each other, and a custom script to simulate the forces from the wheel to keeping the train on the track. A bit similar to using custom scripted wheel collider in the advanced car physics model in this sample: http://blogs.unity3d.com/2010/04/24/car-tutorial/

But unlike those, the script would calculate the track position (for example from a spline), and apply very strong horizontal forces to keep the wheels in the track.

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
avatar image
1

Answer by CarlLydon · Mar 17, 2015 at 02:07 PM

You could treat the track segments like tunnels and forgo any complications of trying to add physics to your wheels.

Create frictionless colliders to the left and right of the tracks to make walls. Use several colliders along curved section of track to form curved walls. Apply some friction to the bottom of the track. You may want to lock some axis depending on if you want the train to bank or not, or if the surface will be flat or curved.

Then, if you put the train in the tunnel, and give it a push, it should stay within the boundaries of the tunnel and move along the track.

As for the other cars There are many suggestions here already so I won't add more.

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
avatar image
0

Answer by efge · Apr 07, 2010 at 02:19 PM

Maybe you could use an Animation Clip to set the x,y,z values for Rigidbody.AddForce or Rigidbody.AddRelativeForce.

Comment
Add comment · Show 1 · 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
avatar image dmaxwell · Apr 09, 2010 at 09:56 AM 0
Share

this explains what I mean http://forum.unity3d.com/viewtopic.php?t=48762

avatar image
0

Answer by KvanteTore · Apr 07, 2010 at 02:30 PM

Hm, that is an interesting problem. I guess if your railroad is a straight linee, you could use a ConfigurableJoint allowing a linear motion along one of the axis. However, this is most certainly too restrictive.

Now, you would like to have a curved track and allow linear motion along the track. I wonder if you could create a ConfigurableJoint for each car. Then, at each FixedUpdate(), find the position on the track closest to the current position of the car, and move the ConfigurableJoint to that posisiton, and rotate it such that the allowed axis of movement is parallel to the track at that point. That way you should get local linear movement along the track at all times without doing any animation trickery.

Comment
Add comment · Show 4 · 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
avatar image dmaxwell · Apr 07, 2010 at 02:43 PM 0
Share

this sounds interesting.I created two elongated boxes and placed a sphere in-between with ridibody component added a force unfortunately when it got to a bend the direction did not change????

avatar image KvanteTore · Apr 07, 2010 at 02:59 PM 0
Share

you need to move and rotate the boxes to match the position on the track closest to where the train is at a given FixedUpdate()

avatar image KvanteTore · Apr 07, 2010 at 02:59 PM 0
Share

Bear in $$anonymous$$d that this is not something I have tried, it only seemed like a possible solution

avatar image dmaxwell · Apr 07, 2010 at 03:09 PM 0
Share

$$anonymous$$aybe use raycast forward from moving box when it intersects (at bend in track ) calculate new angle?

  • 1
  • 2
  • ›

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

2 People are following this question.

avatar image avatar image

Related Questions

Adding force to forward direction 1 Answer

add force to object that has 2 different rigid bodies 0 Answers

Simple Rigidbody / force question 3 Answers

add torque at position 2 Answers

How to calculate force to apply to move object to a certain distance. 1 Answer


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