How do I get my character to stop moving while he is attacking?
I'm trying to make it so when my player attacks, he cant move until the attack is over. Here is my main code: using System.Collections; using System.Collections.Generic; using UnityEngine;
public class playerController : MonoBehaviour { //player body private Rigidbody2D myRigidBody; //Speeds public float moveSpeed; public float jumpSpeed; //Ground check
//Goes to the x,y,z of an object, checks to see if they are on the ground
public Transform groundCheck;
//Creates the canMove variable to true or false
public bool canMove;
//Creates a value to set the raidus of the Ground Check
public float groundCheckRadius;
//Whether or not the play is on the ground
public bool isGrounded;
//Value to say whether or not the player is attacking
private float isAttacking;
//allows you to define a layer as ground
public LayerMask whatIsGround;
//Animator
private Animator myAnim;
// Use this for initialization
void Start () {
//Starts the RigidBody Action
myRigidBody = GetComponent<Rigidbody2D>();
//Starts the animator
myAnim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
//Checks if the player is on the ground
isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);
if (Input.GetAxisRaw("Horizontal") > 0)
{
myRigidBody.velocity = new Vector3(moveSpeed, myRigidBody.velocity.y, 0f);
//Line 1 to make the player animation flip when turning around
transform.localScale = new Vector3(1f, 1f, 1f);
//Solves a bug where you can spam the attack
isAttacking = 0;
} else if (Input.GetAxisRaw("Horizontal") < 0)
{
myRigidBody.velocity = new Vector3(-moveSpeed, myRigidBody.velocity.y, 0f);
//Line 2 to make the player animation flip when turning around
transform.localScale = new Vector3(-1f, 1f, 1f);
//Solves a bug where you can spam the attack
isAttacking = 0;
} else
{
//Stops the player from sliding after the button is let go of
myRigidBody.velocity = new Vector3(0f, myRigidBody.velocity.y, 0f);
}
//Jumping
if(Input.GetButtonDown("Jump") && isGrounded)
{
myRigidBody.velocity = new Vector3(myRigidBody.velocity.x, jumpSpeed, 0f);
}
//Attacking
if(Input.GetButtonDown("Fire1") && isGrounded)
{
//Sets the isAttacking to 1, aka TRUE so it will play the attacking animation in game
isAttacking = 1;
canMove = false;
}
else
{
//Sets the isAttacking to 0, aka FALSE so it wont play the attacking animation in game
isAttacking = 0;
}
//Sets speed for the animator to only a positive value
myAnim.SetFloat("Speed", Mathf.Abs(myRigidBody.velocity.x));
//Sets the "Grounded" bool in the animator to what isGrounded is
myAnim.SetBool("Grounded", isGrounded);
//Says whether or not the player wants to attack or not
myAnim.SetFloat("Attacking", isAttacking);
}
}
Comment
Your answer
Follow this Question
Related Questions
I want to stop movement of character while i call animation like Kick Jump Punch etc.. Please help 1 Answer
How to make your program unable to use after one year? 1 Answer
Unity 2D: Game freezes after the first frame of a particular animation 1 Answer
Play animation on mouse click 1 Answer
Animation play not working C# 0 Answers