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 kartachovd · Jul 04, 2019 at 01:37 AM · animationscripting problemanimatorplayer movementinputs

Inputs and animations interfering with each other

In my game I have it so that when the mouse is pointing on either side of the player and I move the player toward the mouse, it plays a "running forward" animation. On the other hand, when I move the player in the opposite direction of the mouse, it plays a "running backward" animation. So far everything works AS LONG AS I don't try to input two keys at once.

Here's my problem: say I'm pointing my mouse on the right of the player and moving right by holding down the "d" key, it plays "running forward". No problem here. However, if I quickly switch to the "a" key to move left, it still plays "running forward". This obviously has to do with the inputs interfering because everything works nicely if I properly release a key before pressing another. Here's a gif to show you what I mean (I recommend playing in fullscreen). My code:

 void Update()
     {
         //horizontal movement speed
         horMove = Input.GetAxisRaw("Horizontal") * moveSpeed; 

         //position of mouse relative to player
         var delta = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position; 

         //play running backward
         if ((delta.x > 0 && rb.velocity.x < 0) || (delta.x < 0 && rb.velocity.x > 0)) 
         {
             animator.SetFloat("SpeedBack", Mathf.Abs(horMove));
         }
  
         //play running forward
         else if (Mathf.Abs(delta.x) > 0 && Mathf.Abs(rb.velocity.x) > 0) 
         {
             animator.SetFloat("Speed", Mathf.Abs(horMove));
         }
         else //don't play anything
         {
             animator.SetFloat("Speed", 0f);
             animator.SetFloat("SpeedBack", 0f);
         }
     }

The conditions in my animator are set up such that "running forward" switches to "running backward" when Speed < 0.01 and SpeedBack > 0.01. And when switching from "running backward" to "running forward", Speed > 0.01 and SpeedBack < 0.01. Any kind of help would be greatly appreciated!

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 Optrix · Jul 04, 2019 at 04:08 AM

You don't seem to be setting "Speed" to zero when you set "Speedback" and vice-versa. Make sure you set one to zero if you're setting the other to a positive value.

Unless you've been very careful with your output transitions from your running animations, this means that you'll never stop. Once you start moving, the trigger for your first running animation won't be reset until you come to a complete stop.


You are also basing your logic on velocity but basing your animation values on input. You should be consistent there. Either run forwards when moving forwards, or run forwards when the input asks you to. With your current logic, you're doing an unusual blend of both.


Perhaps you'd be better off with an overall speed - it could be positive for forwards, negative for backwards? This won't have the issue.

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 kartachovd · Jul 04, 2019 at 11:47 AM 0
Share

Thanks! It works better now. However when quickly switching from "d" to "a" key it switches to "idle" in between "running forward" and "running backward" making my character look like he's jittering for a fraction of a second.

Edit: Never$$anonymous$$d, playing around with transition times and offset transition makes it look smooth!

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

343 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

Related Questions

Is there a new retargetting system for the animation in 5.5? 1 Answer

How to stop animation from playing in c#. 7 Answers

Character Animator controller/movement 1 Answer

Changing speed of specific animation state, at runtime 1 Answer

Animation with different color for layers 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