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 LoloBad · Feb 08, 2021 at 09:40 PM · animationscripting problemmovement

Flicker at the end of rotate 90° with animations

Hi guys,

I want my 3D game characters to move on a grid. Characters must turn 90 degrees left or right remaining at the same position. I use mixamo's animations : "turn right 90" and others alike.

When a turn starts, I trigger the animation (and lock the character with a boolean to prevent multiple actions)

 if (Input.GetKey(KeyCode.LeftArrow))
 {
         isLocked = true;
         GetComponent<Animator>().SetTrigger("left-turn");
 }

Note: The animation makes the visual of the character turning, but the transform is unchanged.

Then at the last frame of the 'left-turn' animation, an event rotates the transform and unlocks the character.

 public void EndOfLeftTurn()
 {
        transform.rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y - 90f, 0f);
        isLocked = false;
 }

Note: The rotation of the transform is to actually set the character in the proper orientation resulting from the rotation and to have the proper orientation to play the next animation.

Finaly an animation transition brings the character to its 'idle' animation.

It globally works as expected. The problem is that during a very brief moment (flicker) the character appears with an additional 90° rotation.

My guess is : after the transform.rotate = ... is performed by the event, the last frame of the animation lasts again for a few milliseconds. Here is my understanding of the steps. T shows the orientation of the transform, A shows the visual of the animation. alt text

I'm stuck for a couple of days now and what bothers me is that I have no clue to solve this issue.

If my understanding is right, is there a way to enforce the transform.rotation = ... to be exactly executed after the last frame of the left-turn animation and before the first frame of the idle animation ?

Or is there another way to achieve this transition correctly ?

Thanks for your help.

rotation-problem.png (3.3 kB)
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

3 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by YaGa · Feb 08, 2021 at 09:51 PM

I am not sure this will solve your problem but have you can have more control of update order by having different updates in your loop like:

 void Update()
 {
     EarlyUpdate();
     LateUpdate();
    // VeryLateUpdate() etc...
 }
 
 void EarlyUpdate()
 {
 // do things early in the update
 }
 
 void LateUpdate()
 {
 // do things late in the update
 }


The only thing is that it will all happen on the same frame. If you really need to do things per frame, you should use Coroutines and while loops. Hopes it helps!

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 RodrigoAbreu · Feb 08, 2021 at 10:23 PM

Hi @LoloBad, if you coordinate your logic with WaitForEndOfFrame I believe you can achieve what you want to.

https://docs.unity3d.com/ScriptReference/WaitForEndOfFrame.html

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 LoloBad · Feb 08, 2021 at 10:46 PM

I tried but I'm not sure I'm using WaitForEndOfFrame() well.

I modified my EndOfLeftTurn() method this way :

 public void EndOfLeftTurn()
 {
        StartCoroutine(WaitForEndOfAnimation());
 }
 
 public IEnumerator WaitForEndOfAnimation ()
 {
        yield return new WaitForEndOfFrame();
        transform.rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y - 90f, 0f);
        isLocked = false;
 }

All this has no effect. I still have my flicker at the end of my turning animation.

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

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

375 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 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 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 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 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 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 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 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 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 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 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 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 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 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

Root motion or script motion to make a character like riven? and any suggestions for learning resources 0 Answers

animation only playing for a split second 1 Answer

Simple Animation and Scripting Problem. 1 Answer

2 problems with new animation / animator,2 problems with animation 0 Answers

error CS0019: trying to increase velocity when key is pressed twice in quick succession 1 Answer


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