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 osisdie · Aug 27, 2013 at 09:55 AM · speedmovetowardstimestep

gradually raise moving speed but got different results on different devices

I have an idea to make moving bugs(i.e. animals) raise their speed gradually. So I have the following code :

 float m_speedRatio = 1;
 float m_fracJourney = 0;

 void Update(){
     m_speedRatio += 0.01f
 
     m_fracJourney += 5f * Time.deltaTime * this.speedRatio;    
     transform.position = Vector3.MoveTowards( fromVec3, toVec3, m_fracJourney );
 }

As you can see, every bug with this script will move towards the target position, toVec3. In the environment of my notebook, this caused an a little bit slower moving speed, but it made a crazy fast speed in my desktop PC.

How can I fix it to make my game have the similar playing speed no matter it runs on any device ?

My project's TimeManager settings :

  • Fixed Timestep setting : 0.02

  • Maximum Allowed Timestep : 0.3333

  • Time Scale : 1

Thanks !

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
0
Best Answer

Answer by robertbu · Aug 27, 2013 at 11:05 AM

Your problem is on line 5. You increase by a fixed amount every frame. On some devices, your frame rate might average only 30 fps, on others, 100 fps.

You can handle this one of two ways. You can scale your m_speedRatio by Time.deltaTime:

 m_speedRatio += 0.6 * Time.deltaTime;

Or you can move your scale of m_speedRatio into FixedUpdate() where you have a fixed frame rate for the increase.

Comment
Add comment · Show 3 · 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 osisdie · Aug 27, 2013 at 11:32 AM 0
Share

I multiply Time.deltaTime at the very next line. Don't you think they are the same ?

avatar image robertbu · Aug 27, 2013 at 11:48 AM 0
Share

Image your game running at two different speeds, 30fps and 100fps. At 30 fps, m_speedRatio would increase at the rate of .3 per second. At 100 fps, the increase would be 1.0 per second (three times faster). You do scale m_fracJourney by Time.deltaTime, but since m_seedRatio is not scaled, you get the uneven performance.

I only see this tiny slice of your code, but I don't understand why you have both m_speedRatio and m_fracJourney unless you are trying for a non-linear increase in speed.

avatar image osisdie · Aug 27, 2013 at 03:47 PM 0
Share

I just resolved this problem in the way of FixedUpdate() as you mentioned. Also, I gave some attributes to bugs such as value of m_speedRatio, etc. If I have to find out some thresholds for those variables on different devices, I think FixedUpdate() can make all things less complicated. Thanks. And yes, its a non-linear increasing speed.

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

15 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to slow down my spawn rate? 1 Answer

MoveTowards with animation 1 Answer

Using time.deltatime to move from coordinate to coordinate is too fast? 1 Answer

Adjust the speed of an individual axis when using MoveToward,Adjust the speed by individual axis usingMoveToward 1 Answer

Changing the spawn rate 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