So I’m making a 2D Platformer by following a youtube tutorial series(1. Unity 5 tutorial for beginners: 2D Platformer - Intro - YouTube), 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-5. Unity 5 tutorial for beginners: 2D Platformer - Running animation - YouTube … 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;
}
}
}