- Home /
character does not transition back to idle from run animation
The character plays the idle animation once at the start, upon pressing the left or right button, it transitions to the run animation however, it wont transition back to idle, being stuck in the running animation, i have a feeling that it could be that the speed stays fixed at 1, but i am not sure. I am fairly new, this could just be a simple answer. This is the character controller script. (if it helps)
using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
namespace MoreMountains.Tools
{
public class PlatformerCharacter2D : MonoBehaviour
{
public static PlatformerCharacter2D instance;
[SerializeField] public float m_MaxSpeed = 10f; // The fastest the player can travel in the x axis.
[SerializeField] public float m_JumpForce = 600f; // Amount of force added when the player jumps.
[SerializeField] private bool m_AirControl = false; // Whether or not a player can steer while jumping;
[SerializeField] private LayerMask m_WhatIsGround; // A mask determining what is ground to the character
private Transform m_GroundCheck; // A position marking where to check if the player is grounded.
const float k_GroundedRadius = .2f; // Radius of the overlap circle to determine if grounded
private bool m_Grounded; // Whether or not the player is grounded.
private Animator m_Anim; // Reference to the player's animator component.
private Rigidbody2D m_Rigidbody2D;
private bool m_FacingRight = true; // For determining which way the player is currently facing.
[HideInInspector]
public Collider2D[] myColls;
private void Awake()
{
instance = this;
// Setting up references.
m_GroundCheck = transform.Find("GroundCheck");
m_Anim = GetComponent<Animator>();
m_Rigidbody2D = GetComponent<Rigidbody2D>();
myColls = this.GetComponents<Collider2D>();
}
private void Update()
{
m_Grounded = false;
// The player is grounded if a circlecast to the groundcheck position hits anything designated as ground
// This can be done using layers instead but Sample Assets will not overwrite your project settings.
Collider2D[] colliders = Physics2D.OverlapCircleAll(m_GroundCheck.position, m_WhatIsGround);
for (int i = 0; i < colliders.Length; i++)
{
if (colliders[i].gameObject != gameObject)
m_Grounded = true;
}
m_Anim.SetBool("Ground", m_Grounded);
// Set the vertical animation
m_Anim.SetFloat("vSpeed", m_Rigidbody2D.velocity.y);
}
public void Move(float move)
{
//only control the player if grounded or airControl is turned on
if (m_Grounded || m_AirControl) {
// The Speed animator parameter is set to the absolute value of the horizontal input.
m_Anim.SetFloat ("Speed", Mathf.Abs (move));
// Move the character
m_Rigidbody2D.velocity = new Vector2 (move * m_MaxSpeed, m_Rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if (move > 0 && !m_FacingRight) {
// ... flip the player.
Flip ();
}
// Otherwise if the input is moving the player left and the player is facing right...
if (move < 0 && m_FacingRight) {
// ... flip the player.
Flip ();
}
}
}
public void Jump (bool jump )
{
// If the player should jump...
if (m_Grounded && jump && m_Anim.GetBool("Ground"))
{
// Add a vertical force to the player.
m_Grounded = false;
m_Anim.SetBool("Ground", false);
m_Rigidbody2D.velocity = new Vector2 (0, 0);
m_Rigidbody2D.AddForce(new Vector2(0f, m_JumpForce));
}
}
private void Flip()
{
// Switch the way the player is labelled as facing.
m_FacingRight = !m_FacingRight;
// Multiply the player's x local scale by -1.
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
}
sorry but could you explain, on how you would go about doing it ?
logging the value to the console? setting a breakpoint after the anomaly happens and investigate? debugging your code.
https://unity3d.com/de/learn/tutorials/topics/scripting/debugging-unity-games-visual-studio
Your answer
Follow this Question
Related Questions
Idle Animations, Player Walking 0 Answers
Mechanim trigger problem 1 Answer
Player plays walking animation if I press a and d at the same time while standing still 2 Answers
Won't run when clicked during animation. 1 Answer
8-Way Animation Blending 2 Answers