Hello guys, i am making a platformer game where the player moves and jumps. Now, my issue is that I want the player to move in the direction they press when in the air( When Boolean grounded == false) and remain moving in that direction until they hit the ground at which point they resume control of ground controls. i tried loops but they only make the Unity Editor crash. My movement script snippet is as follows:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
if(grounded == true)
{
if(Input.GetAxis(“move”) > 0)
{
transform.Translate(0,0,speed * Time.deltaTime);
transform.localScale = Vector3(1,1,1);
}
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
So my request is to get help on making code that will be executed when Grounded == false && when the user presses a key to move left or right.
Thanks in advance
@Timothy-Morales
Here is my code :D. Maybe you could make use of it.
public float jumpForce = 100;
public float speed = 10;
public KeyCode key = KeyCode.Space;
bool grounded;
bool canDoubleJump;
Rigidbody2D rb;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
float moveHorizontal = Input.GetAxis("Horizontal");
//Store the current vertical input in the float moveVertical.
float moveVertical = Input.GetAxis("Vertical");
//Use the two store floats to create a new Vector2 variable movement.
Vector2 movement = new Vector2(moveHorizontal, moveVertical);
//Call the AddForce function of our Rigidbody2D rb2d supplying movement multiplied by speed to move our player.
rb.AddForce(movement * speed);
if (Input.GetKeyDown(key))
{
if (grounded)
{
rb.velocity = new Vector2(rb.velocity.x, 0);
rb.AddForce(new Vector2(0, jumpForce));
canDoubleJump = true;
Debug.Log("Jump1: Working!");
}
else
{
if (canDoubleJump)
{
canDoubleJump = false;
rb.velocity = new Vector2(rb.velocity.x, 0);
rb.AddForce(new Vector2(0, jumpForce));
Debug.Log("Jump2: Working!");
}
}
}
}
private void OnCollisionEnter2D(Collision2D other)
{
if (other.transform.tag == "Floor")
{
grounded = true;
}
}
private void OnCollisionExit2D(Collision2D other)
{
if (other.transform.tag == "Floor")
{
grounded = false;
}
}
Thanks @KittenSnipes.I will study your code and see what i can come up with. Thumbs up dude