This question was
closed Jul 31, 2017 at 06:16 PM by
FortisVenaliter for the following reason:
Unreadable question with meaningless subject
Question by
DiamondMC102 · Jul 31, 2017 at 06:08 PM ·
2d gameanimator2d-platformer2d animation
If you call yourself a game developer. 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 and a script called Indingo. Now in the animator, I made a parameter of type float named "speed", then 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 speed(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's 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;
}
}
}
Comment