Newbie here, I’m working on a running script for a 2D platformer but I can’t get it to work. Here’s what I’ve got so far:
using UnityEngine;
using System.Collections;
public class nuntiControllerScript : MonoBehaviour {
public float maxSpeed = 10f;
bool facingRight = true;
public float move;
Animator anim;
// Use this for initialization
void Start()
{
//The animator is called in order to play a running animation.
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate()
{
//While the D key is held down, move is 1
while (Input.GetKey(KeyCode.D))
{
move = 1;
};
//while the A key is held down, move is -1
while (Input.GetKey(KeyCode.A))
{
move = -1;
};
//The value of the speed parameter is altered to be equal to the value of move. This causes the idle animation to transition into running.
anim.SetFloat("Speed", Mathf.Abs(move));
//The velocity of the character is 10 x move, which is either 1, so the character moves to the right, or -1 so he moves to the left
GetComponent<Rigidbody2D>().velocity = new Vector2(move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
if (move > 0 && !facingRight) //If the move is greater than 0 and you aren't facing right,
Flip(); //turn around so you are.
else if (move < 0 && facingRight) //If the move is less than 0 and you are facing right,
{ //turn around to face left and set facingRight to false.
Flip();
facingRight = false;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Whenever I try and run the code as it is now, the program crashes. I’ve also had issues where:
- the sprite would move, albeit only to the left, but there’d be huge lag and the sprite wouldn’t flip
- the sprite would just rotate slightly to the right when the right arrrow key was pressed
- the sprite just wouldn’t move (This was the most common problem)
I’ve been trying to make this work for a couple of days now. Anyone got any advice?