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 Danao · Oct 21, 2014 at 11:05 AM · rigidbodycoroutineyielddeath

How can I improve this player death coroutine?

Hello,

I'm trying to use this coroutine to have my player a) freeze in place on death b) play the full death animation clip and c) load the level. If I put isKinematic before the yield, the animation doesn't finish. If I put it after, the player continues falling after the animation is played. Any suggestions would be greatly appreciated!

 private IEnumerator DeathAnim ()
     {
         deathSound.Play ();//plays the death sound
         animation.Play("Death");//plays the death animation
         yield return new WaitForSeconds(.3f);//give the animation time to finish
         rigidbody2D.isKinematic = true;//freeze the rigidbody2D of the player
         Application.LoadLevel (Application.loadedLevel);//reload the current level
         }
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

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Danao · Nov 01, 2014 at 05:28 AM

This is the result of what worked well for me:

 private IEnumerator DeathAnim ()
     {
         rigidbody2D.isKinematic = true;//freeze the rigidbody2D of the player
         deathSound.Play ();//plays the death sound
         animator.SetInteger ("AnimState", 1);
         yield return new WaitForSeconds(1);//Use the length of the animation clip as the wait time for yield
         Application.LoadLevel (Application.loadedLevel);//reload the current level
         }

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 HarshadK · Oct 21, 2014 at 11:14 AM

You can use the length of the animation as the wait parameter to your yield statement.

 private IEnumerator DeathAnim ()
  {
      deathSound.Play ();//plays the death sound
      animation.Play("Death");//plays the death animation
      yield return new WaitForSeconds(animation["Death"].length);//Use the length of the animation clip as the wait time for yield
      rigidbody2D.isKinematic = true;//freeze the rigidbody2D of the player
      Application.LoadLevel (Application.loadedLevel);//reload the current level
  }
Comment
Add comment · Show 7 · 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 Danao · Oct 21, 2014 at 11:23 AM 0
Share

Thanks for the reply Harshad$$anonymous$$! I tried what you suggested above, but for some reason I can't get $$anonymous$$onoDevelop to recognize the .length part. Any ideas what I'm doing wrong?

avatar image HarshadK · Oct 21, 2014 at 11:28 AM 0
Share

Try

 animation["Death"].clip.length

as parameter.

avatar image Danao · Oct 21, 2014 at 11:43 AM 0
Share

Ok, it's recognized now, but telling me that there is no Animation attached to the player. I'm not sure how that is possible since the script is attached to the player with the animator...

avatar image HarshadK · Oct 21, 2014 at 11:45 AM 1
Share

Are you using Animator or Animation component?

avatar image Danao · Oct 21, 2014 at 12:00 PM 0
Share

I've tried both ways, getting the no Animation error with Animator and getting a Null Reference with Animation.

Show more comments

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

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

Related Questions

yield WaitForSeconds compatibility? 0 Answers

How To Create Coroutine Delegates? 1 Answer

www class blocks script execution 1 Answer

C# yield not doing anything 2 Answers

Yield Problems 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