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 Ing3nu · Mar 01, 2014 at 09:23 PM · lerpcoroutinesobject movement

Coroutine not running to end?

I am moving an object in Unity3d from point A (the objects current location) to point b (a public Vector3 added through the Inspector.

I am using Lerp to handle the movement of the object, and when I place my code under "Update" it works exactly as planned. But I need to make this triggerable (when the number of touches >= 10, this movement is triggered).

Coroutines seem to be what I need, and the movement fires as expected, but it isn't running to completion. The object moves a tiny bit, then stops.

Could someone point me at my error? I feel like the answer is in the yield statement, but I'm not sure what it should say.

Thanks in advance! Code below.


     void Update()
     {
 
             limitText.text = tapLimit.ToString();
             if (Input.GetMouseButtonUp(0))
         {
             tapCount = int.Parse(tapText.text);
             tapCount += 1;
             tapText.text = tapCount.ToString();
             currentTaps = tapCount;
 
             {
                 if(tapCount >= tapLimit)
                     StartCoroutine(EndLevel()); 
                 
             }
         }
     
     }
 
     IEnumerator EndLevel()
         {
             EndScreen.transform.position = Vector3.Lerp(EndScreen.transform.position, pointB, _t);
             _t += Time.deltaTime/2;
             yield return null;
         }
 
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 fafase · Mar 01, 2014 at 09:31 PM

You need to place it in a loop to repeat the action.

 IEnumerator EndLevel(){
      EndScreen.transform.position = Vector3.Lerp(EndScreen.transform.position, pointB, _t);
      _t += Time.deltaTime/2;
      yield return null;
 }

This will run once until the yield then next time it will start from the where it left off, the yield. But there is nothing after that so it returns.

What you need is to loop until a condition is met:

 IEnumerator EndLevel(){
    while((_t < 1){
      EndScreen.transform.position = Vector3.Lerp(EndScreen.transform.position, pointB, _t);
      _t += Time.deltaTime/2;
      yield return null;
    }
  }

Now as long as _t is smaller than 1, it is looping. Now you are maybe not using the best way but at least that should get you going.

Maybe you want to use MoveTowards instead which is easier to control.

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 Ing3nu · Mar 02, 2014 at 12:53 AM 0
Share

Brilliant!
That is, in fact, just what I needed. Thank you!

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

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

Related Questions

Can't figure out While Loop crash? 1 Answer

How to spawn evenly spaced game objects and move them in a circular path? 1 Answer

How to start a coroutine with WaitForSeconds on key down? 2 Answers

Yield WaitForSeconds not working > once in coroutine 1 Answer

How to ''stack'' coroutines, and call each one till all are executed? 5 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