Question by
joshlittle · Feb 02, 2017 at 10:46 PM ·
controller2d-platformermovement script2d-physicsjumping
Can't control jumping while moving horizontally
Hello, I can't seem to fully control my 2D character's jump while moving horizontally. Sometimes it works perfect and other times, while moving (especially on slopes), it does not. The jump-only and move-only seem to work perfectly all the time but only sometimes when used together. I also notice that the character moves perfectly while in the air. Below is my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] private Transform[] groundPoints;
[SerializeField] private float groundRadius;
[SerializeField] private LayerMask groundObject;
private Rigidbody2D playerRigidbody;
private bool groundCheck;
public bool jump;
public float playerSpeed;
public float jumpPower;
void Start () {
playerRigidbody = GetComponent<Rigidbody2D> ();
}
void FixedUpdate () {
float horizontal = Input.GetAxisRaw("Horizontal");
PlayerMovement(horizontal);
groundCheck = GroundCheck();
RestValues ();
}
private void PlayerMovement(float horizontal) {
playerRigidbody.velocity = new Vector2(-1 * horizontal * playerSpeed, playerRigidbody.velocity.y);
if (horizontal == 0.1) { playerSpeed = 0; }
if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W)) { jump = true; }
if (groundCheck && jump)
{
groundCheck = false;
playerRigidbody.AddForce(new Vector2(0, jumpPower));
}
}
private bool GroundCheck () {
if (playerRigidbody.velocity.y <= 0)
{
foreach (Transform point in groundPoints)
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(point.position, groundRadius, groundObject);
for (int i = 0; i < colliders.Length; i++)
{
if (colliders [i].gameObject != gameObject)
{
return true;
}
}
}
}
return false;
}
private void RestValues () {
jump = false;
}
}
Comment
Your answer
Follow this Question
Related Questions
Broken Jump Physics 0 Answers
Where is the Jump Input in the default 2d platform controller? 0 Answers
Trying to make 2D jumping arc 0 Answers
Player can only jump once!? 0 Answers