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 alanweide · Mar 30, 2015 at 09:36 AM · coroutinelerpparentchildtransform.position

object's children not moving with it when using a Lerp-ing coroutine

The title basically says what my problem is, but I'll give more detail here: I'm working on a building block application of sorts and when the user disconnect previously-connected pieces, the pieces that the selected piece is disconnecting from should explode away from the central piece. However, if I do this translation with a coroutine that animates the movement over a short period of time, only the calling transform will move, not its children. But here's the kicker: if I do this translation instantly without a coroutine, with a coroutine that instantly translates and then returns, or with a coroutine that translates it with the Lerp function over a period of time and then returns after the translation, it works beautifully. Any ideas why this might be happening? I've been racking my brain all day on this problem. Here's the LerpToPosition coroutine that's causing the issue (it's triggered on a button press):

 private IEnumerator LerpToPosition_(Vector3 newPosition)
 {
     float t = 0.0f;
     Vector3 startingPos = transform.position;
 
     // if the object is close to the new location, make the transition quicker
     float lerpSpeed =
         Mathf.Min(posLerpCoefficient * (transform.position - newPosition).magnitude, maxLerpDuration);
 
     while (t < 1.0f) {
         t += Time.deltaTime * (Time.timeScale / lerpSpeed);
 
         transform.position = Vecto3.Lerp(startingPos, newPosition, t);
 
         yield return 0;
     }
 }

For the sake of completeness, here's a version of that coroutine that does what I want it to (minus, of course, the animation):

 private IEnumerator LerpToPosition_(Vector3 newPosition)
 {
     float t = 0.0f;
     Vector3 startingPos = transform.position;
 
     // if the object is close to the new location, make the transition quicker
     float lerpSpeed =
         Mathf.Min(posLerpCoefficient * (transform.position - newPosition).magnitude, maxLerpDuration);
 
     while (t < 1.0f) {
         t += Time.deltaTime * (Time.timeScale / lerpSpeed);
 
         transform.position = Vecto3.Lerp(startingPos, newPosition, t);
     }
     yield return 0;
 }

And another version that works:

 private IEnumerator LerpToPosition_(Vector3 newPosition)
 {
     float t = 0.0f;
     Vector3 startingPos = transform.position;
 
     // if the object is close to the new location, make the transition quicker
     float lerpSpeed =
         Mathf.Min(posLerpCoefficient * (transform.position - newPosition).magnitude, maxLerpDuration);
 
     transform.position = newPosition;
     yield return 0;
 }

What the hell is going on in my code? And how do I fix it? If you'd like I can include screenshots of what exactly is happening.

Comment
Add comment · Show 2
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 hexagonius · Mar 30, 2015 at 01:28 PM 0
Share

First and second code posts are identical.

It's also quite hard to grasp what you mean, because you're talking about parents, children and animation, but kind of only have one script affecting one position.

avatar image Ericool · Apr 01, 2015 at 05:18 PM 0
Share

try adding a while(true) in it , not sure if that will do a change though

0 Replies

· Add your reply
  • Sort: 

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Make a simple tree 1 Answer

Child Object Left Behind when Parent Moves at Start of Scene 1 Answer

Set Position and Rotation with another GameObject as Pivot (Script) 0 Answers

Lerp a Child but 'keep up locally' with Parent 0 Answers

Why can't I set transform.position on a child object? 2 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