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 DiamondMC102 · Jul 30, 2017 at 08:48 AM · animationscripting problemanimator2d-platformeranimator controller

Animator and Scripting problems. Help !!

So I'm making a 2D Platformer by following a youtube tutorial series(https://www.youtube.com/watch?v=SCRupyidkYA), basically, a few videos in we already made the player(Indingo) able to walk by using an animation called walk and inserting that animation into the animator and scripting the player movement in a script called Indingo. Now in the animator, I made a parameter of type float named "speed", now firstly I have an Idle animation and a Walk animation. Now to transition from Idle to Walk "speed" has to be greater than 0.01 and to transition back to Idle from Walk "speed" has to be less than 0.01. Now my problem is I made two if statements one for A and the other D, the if statement basically says if A OR D pressed twice increase the players(Indingo) movementSpeed ,and play the run animation, but I couldn't find a way to increase the players movementSpeed , and play the run animation for the if statement. I don't what this means but the man behind these tutorials said something about 0.01 being the horizontal value. He says something about horizontal value in this video-https://www.youtube.com/watch?v=KF0jepqDAtw .... at this time 6:36

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Indingo : MonoBehaviour {
 
     int counter;
 
     private Rigidbody2D MyRigidBody;
 
     private Animator MyAnimator;
 
     [SerializeField]
     private float movementSpeed;
 
     private bool facingRight;
 
     // Use this for initialization
     void Start ()
     {
         facingRight = true;
         MyRigidBody = GetComponent<Rigidbody2D>();
         MyAnimator = GetComponent<Animator>();
     }
     
     // Update is called once per frame
     void FixedUpdate ()
     {
         if (Input.GetKeyDown (KeyCode.A)) 
         {
             print("A key was pressed");
 
             counter++;
 
             if (counter == 2) 
             {
 
                 // This is where I want to increase the players speed(movementSpeed) and play the run animation
 
                 print("A was pressed twice");
 
                 counter = 0;//Reset counnter
             }
 
 
         }
 
         if (Input.GetKeyDown(KeyCode.D))
         {
             print("D key was pressed");
 
             counter++;
 
             if (counter == 2)
             {
 
                 // This is where I want to increase the players speed(movementSpeed) and play the run animation
 
                 print("D was pressed twice");
 
                 counter = 0;//Reset counnter
             }
 
 
         }
 
         float horizontal = Input.GetAxis("Horizontal");
 
         HandleMovement(horizontal);
 
         Flip(horizontal);
     }
 
     private void HandleMovement(float horizontal)
     {
         MyRigidBody.velocity = new Vector2(horizontal * movementSpeed, MyRigidBody.velocity.y); // x - 1, y = 0;
 
         MyAnimator.SetFloat("speed", Mathf.Abs(horizontal));
     }
 
     private void Flip(float horizontal)
     {
         if (horizontal > 0 && !facingRight || horizontal < 0 && facingRight)
         {
             facingRight = !facingRight;
 
             Vector3 thescale = transform.localScale;
 
             thescale.x *= -1;
 
             transform.localScale = thescale;
         }
     }
 }





alt text

alt text

unity-561f1-personal-64bit-mainunity-indingo-tnlon.png (98.9 kB)
unity-561f1-personal-64bit-mainunity-indingo-tnlon.png (104.0 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

1 Reply

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

Answer by a161803398874 · Aug 02, 2017 at 08:01 AM

I recommend if you are a beginner ,to keep it simple and instead of a double tap run controller use a key from the keyboard, for example "Shift" or "Space", this way you can first test out how the animator controller works out and then you can tweak the controller as you like, the main idea is to learn how to comunicate with your script and the animator controller. 4example Lets say we have 3 animations in a character ( "Idle" "Walk" and "Run") and are all ready and setup in unity with animator and its controller, everything linked with the white arrows logicaly correct in the animator window(transitions) back and forth from idle to walk, and back and forth from walk to run, to transition between the animations we will need 2 parameters , one parameter is a float called "speed" same as you have and the other one will be a Bool called "isRun" ,the transitions between "Idle" and "Walk" have the condition called "speed" and to play the "Run" animation the condicions are the float parameter "speed" && the bool parameter "IsRun". Now we need the script to put some values in these parameter values Replace this script with your current one just add the parameter "isRun" in unity in the animator window configure the transitions and you are free to go.. i tried to modifi your script the less possible.

 using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  
  public class Indingo : MonoBehaviour {
      
 
      public int runMod;  // Run Speed multiplier
      
  
      private Rigidbody2D MyRigidBody;
  
      private Animator MyAnimator;
  
      [SerializeField]
      private float movementSpeed;
  
      private bool facingRight;
  
      // Use this for initialization
      void Start ()
      {
          facingRight = true;
          MyRigidBody = GetComponent<Rigidbody2D>();
          MyAnimator = GetComponent<Animator>();
      }
      
      // Update is called once per frame
      void FixedUpdate ()
      {
          
          float horizontal = Input.GetAxis("Horizontal");
  
          HandleMovement(horizontal);
  
          Flip(horizontal);
      }
  
      private void HandleMovement(float horizontal)
      {
         if(Input.GetKey(KeyCode.LeftShift))
         {
             MyRigidBody.velocity = new Vector2(horizontal * movementSpeed * runMod, MyRigidBody.velocity.y); // x - 1, y = 0;
  
          MyAnimator.SetFloat("speed", Mathf.Abs(horizontal));
          MyAnimator.SetBool("isRun", true);
 
         }else{
 
 
 
          MyRigidBody.velocity = new Vector2(horizontal * movementSpeed, MyRigidBody.velocity.y); // x - 1, y = 0;
          MyAnimator.SetBool("isRun", false);
  
          MyAnimator.SetFloat("speed", Mathf.Abs(horizontal));
      }
  
      private void Flip(float horizontal)
      {
          if (horizontal > 0 && !facingRight || horizontal < 0 && facingRight)
          {
              facingRight = !facingRight;
  
              Vector3 thescale = transform.localScale;
  
              thescale.x *= -1;
  
              transform.localScale = thescale;
          }
      }
  }



Comment
Add comment · Show 2 · 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 DiamondMC102 · Aug 02, 2017 at 09:46 AM 0
Share

@ a161803398874 thanks so much, I started experimenting around with it, and I will ask you for your help if I run into problems if you don't $$anonymous$$d.

avatar image a161803398874 DiamondMC102 · Aug 02, 2017 at 08:54 PM 0
Share

sure! :) ask what you need

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

203 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

Related Questions

Character Animator controller/movement 1 Answer

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

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

How to properly detect the end time of an Animation which wait for the end of the previous one ? 1 Answer

Help with animator controllers 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