Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 VerrucaG · Sep 29, 2015 at 03:27 PM · timelerptime.time

Lerping takes 10 x longer than it should

Hi all, I've written a generic lerp function for use in my project, however I've noticed some odd behaviour. The time taken to lerp seems to be 10x longer than the value I am parsing to the function in seconds. If I divide seconds by 10 I get an accurate timing for the lerp. Can someone explain to me why this is happening?

 //INITIALISATION CODE
 function Start () {
     GlobalFunctions.Lerp(transform, transform.position, Vector3(0, 0, 10), 10);
 }


 //STATIC FUNCTION IN ANOTHER SCRIPT
 static function Lerp (object: Transform, startPos: Vector3, endPos: Vector3, seconds: float)
 {
     //seconds = seconds / 10; ---- BY ENABLING THIS THE FUNCTION WORKS AS EXPECTED
     var startTime = Time.time;
     var per: float = 0.0;
     var timeSinceStart: float = 0.0;
     var zoomTime: float = 0.0;
     
     while (object.position != endPos)
     {
         Debug.Log(timeSinceStart);
         timeSinceStart = Time.time - startTime;
         per = timeSinceStart / seconds;
         object.position = Vector3.Lerp(startPos, endPos, per);
         yield;
     }
 }    
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
2
Best Answer

Answer by Jessespike · Sep 29, 2015 at 03:49 PM

Ahh, I'm not sure what you mean by it's 10x longer than it should be. This example lasts 10 seconds as it should. You mean, you want it to last 1 second? Why not change the seconds var from 10 to 1?

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 VerrucaG · Sep 29, 2015 at 03:56 PM 0
Share

No I mean that if I set it to 10 it will lerp over 100 seconds

avatar image Jessespike · Sep 29, 2015 at 04:01 PM 2
Share

I just tried it, I set it to 10 and it lasted 10 seconds. Is your timeScale set to 1? (Edit->Project Settings->Time)

avatar image VerrucaG Jessespike · Sep 29, 2015 at 04:03 PM 0
Share

That's it. $$anonymous$$y time scale was set to 0.1 That makes sense :-) Thanks for the help

avatar image VerrucaG VerrucaG · Sep 29, 2015 at 05:19 PM 0
Share

So as an addition to this I've added a handler to ignore time scale (basically bodge it to 1.0 for this) within the function which allows you to ignore it if you so chose:

 static function Lerp (object: Transform, startPos: Vector3, endPos: Vector3, seconds: float, ignoreTimeScale: boolean)
 {
     if (ignoreTimeScale == true) ---------- THIS
     {
         seconds = seconds / (1.0 / Time.timeScale); ------ THIS
     } ------- THIS
     var startTime = Time.time;
     var per: float = 0.0;
     var timeSinceStart: float = 0.0;
     
     while (object.position != endPos)
     {
         timeSinceStart = Time.time - startTime;
         per = timeSinceStart / seconds;
         object.position = Vector3.Lerp(startPos, endPos, per);
         yield;
     }
 }    

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

slow a lerp ? array/static problem 1 Answer

Jump with mathf.lerp problem 2 Answers

how to use time on lerp 2 Answers

Help with time.time when new scene starts. 1 Answer

It is not updated per second 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