Hi…
I am new to Unity and C# and i decided i want to make a simple platform game in 2D, where the player only moves in one direction, but i cannot seem to figure it out, how to ground the player so that when i press Space multiple times it won’t jump midair. Please help me…
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
public float maxSpeed = 10f;
bool facingRight = true;
bool grounded = false;
public Transform floorCheck;
float floorRadious = 0.2f;
public LayerMask Floor;
public float jumpForce;
private Rigidbody2D rb2d;
void Awake()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
grounded = Physics2D.OverlapCircle (floorCheck.position, floorRadious, Floor);
float move = 1;
rb2d.velocity = new Vector2 (move * maxSpeed, rb2d.velocity.y);
if (move > 0 && !facingRight)
Flip ();
else if (move < 0 && facingRight)
Flip ();
}
void Update ()
{
if (Input.GetKeyDown (KeyCode.Space) && grounded)
{
rb2d.AddForce (new Vector2 (0, jumpForce));
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}