- Home /
my player does the animation on the floor as if he had to jump but walking makes the animation stop I think it's the groundcheck that does not work. I have bad English it was in the translator.
And have this erro : UnassignedReferenceException: The variable groundCheck of Player has not been assigned. You probably need to assign the groundCheck variable of the Player script in the inspector. UnityEngine.Transform.get_position () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/TransformBindings.gen.cs:27) Player.Update () (at Assets/Scripts/Player.cs:30)
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour {
[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;
// Use this for initialization
void Awake()
{
anim = GetComponent<Animator>();
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
if (Input.GetButtonDown("Jump") && grounded)
{
jump = true;
}
}
void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(h));
if (h * rb2d.velocity.x < maxSpeed)
rb2d.AddForce(Vector2.right * h * moveForce);
if (Mathf.Abs(rb2d.velocity.x) > maxSpeed)
rb2d.velocity = new Vector2(Mathf.Sign(rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
if (h > 0 && !facingRight)
Flip();
else if (h < 0 && facingRight)
Flip();
if (jump)
{
anim.SetTrigger("Jump");
rb2d.AddForce(new Vector2(0f, jumpForce));
jump = false;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Answer by MT369MT · Sep 19, 2017 at 05:32 PM
Hi You must add the Transform groundCheck in the inspector or you must declear it like: groundCheck = new Vector3(x, y, z)
What I have to eli$$anonymous$$ate ? I have to add transform ground check in C # code. I have box collisor 2d I put in it?
i dont have groundCheck = new Vector3(x, y, z) in code so I have to puy transform ground check in code.