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 Ananda · Aug 14, 2013 at 01:58 PM · keypresswalkingwalkanim

how can I make an animation play on keypress but stop on release?

I have a model with an animator component and an animation controller. I want the animation to only play when I press right and left arrow keys. I have gotten it to play the animation but if I release the button it just keeps on playing. I've tried lots but it just wont stop.

Here's my script:

 #pragma strict
 
 var speed = 5.0;
 
 
 function Start () {
 
 }
 
 function Update () 
 {
 
   if (Input.GetAxis("Horizontal") > 0) {
     transform.Translate(0, 0, 5 * Time.deltaTime);
      transform.eulerAngles = new Vector3(0,0,0);
      animation.Stop ("walk");
   }
   
   if (Input.GetAxis("Horizontal") < 0) {
     transform.Translate(0, 0, 5 * Time.deltaTime);
      transform.eulerAngles = new Vector3(0,180,0);
      animation.Stop ("walk");
   }
   if (Input.GetAxis("Horizontal") == 0){
      animation.Stop("walk");
      } 
   
   }

Any suggestions extremely welcome!

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

Answer by Xtro · Aug 14, 2013 at 02:10 PM

First of all, There are two types of animation system in Unity. First and old one is called Legacy Animation and the other is Mecanim.

Legacy animation system is driven by "Animation" component and the animation files are attached to that component directly. The component you see here... http://docs.unity3d.com/Documentation/Components/class-Animation.html

Mecanim is the new and the good animation system. It's complex to understand at first but has very big advantages. It's driven by "Animator" component (notice the name is different) and the "Animator Controller" file. The animation files are attached to Animation Controller in a state machine format.

As I see from your code, you are using Legacy system. So, you should be using Animator and Animation Controller. Just remove them from your game object.

the "animation" object in the gameobject is used for legacy system. You can easily start and stop the animations which are registered on the animation component just like in the web page I linked above.

Notice : To be used in legacy system, models and animation files must be imported as "legacy" mode in the "Rig" tab of model importer window.

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 theUndeadEmo · Aug 14, 2013 at 02:11 PM

simple solution if you haven't tried this is to set the animation to loop or not

inside you if statements for when key pressed

 animation["animationClipName"].wrapMode = WrapMode.Loop;

at start of your function Update()

have

 animation["animationClipName"].wrapMode = WrapMode.Once;


see if that solves it, but when you have lots of aniamtions you may have to search a better solution.

this will work if you are using Legacy animation type i believe

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

18 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

Related Questions

How to get my rigged character to simply walk from A to B (Cinematic not game) 1 Answer

What's the difference between animation and animator ? 0 Answers

C# Movement Script 0 Answers

Mixamo + Animation Movement BASIC 2 Answers

Animation clips anyone? 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