Question by
Samantha_GameDev · May 20, 2018 at 08:49 PM ·
2d-platformerjumping
i'm making a 2d game, the player can endlessly jumply please help!
using UnityEngine; using System.Collections;
public class robotControler : MonoBehaviour { //how fast the robot con move public float topSpeed = 10f; //tell the sprite wich way to face bool facingRight = true;
//get rederence to animator
Animator anim;
//not grounded
bool grounded = false;
//transforms at robots foot to see if he is touching the ground
public Transform groundCheck;
//how big the circle is going to be when we check the distance
float groundRadius = 0.2f;
// force of the jump
public float jumpForce = 700f;
//what layer is cnsidered the ground
public LayerMask whatIsGround;
//varible to check double jump
bool doubleJump = false;
void Start()
{
anim = GetComponent<Animator>();
}
//physics in fixed update
void FixedUpdate()
{
//true or false did the ground transform hit the what is ground with the ground radius
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
//tell the animator that we are grounded
anim.SetBool("Ground", grounded);
//reset double jump
if (grounded)
doubleJump = false;
//how fast we are moving down from the rigif body
anim.SetFloat("vSpeed", GetComponent<Rigidbody2D>().velocity.y);
//get move direction
float move = Input.GetAxis("Horizontal");
//add velocity to ridgidbody in move direction * our speed
GetComponent<Rigidbody2D>().velocity = new Vector2(move * topSpeed, GetComponent<Rigidbody2D>().velocity.y);
//new
anim.SetFloat("Speed", Mathf.Abs(move));
//if we're facing the negative direction and not facing the right, flip
if (move > 0 && !facingRight)
Flip();
else if (move < 0 && facingRight)
Flip();
}
void Update()
{
if ((grounded || !doubleJump) && Input.GetButtonDown("Jump"))
{
anim.SetBool ("Ground", false);
GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce));
if (!doubleJump && !grounded)
doubleJump = true;
}
}
void Flip()
{
//saying we are facing the opersite way
facingRight = !facingRight;
//get the local scale
Vector3 theScale = transform.localScale;
//flip on the x axis
theScale.x *= -1;
//apply that to the local scale
transform.localScale = theScale;
}
}
Comment