Unity2D игрок не прыгает

Пишу 2D шутер и начал делать передвижение. Я решил переделать код из этого видео в 2D пространство и вышло это:

using UnityEngine;

public class MovePlayer : MonoBehaviour
{
private float speed;
public float WalkSpeed = 5f;
public float RunSpeed = 7f;
public float JumpForce = 6f;
private Rigidbody2D rb;
private Vector3 _normal;
private bool isFacingRight = true;
private Animator anim;
private bool is_ground;

private void Start()
{
    anim = GetComponent<Animator>();
    rb = GetComponent<Rigidbody2D>();
}

private void Update()
{
    if (Input.GetKey(KeyCode.LeftShift)) speed = RunSpeed; else speed = WalkSpeed;
    if (Input.GetKeyDown(KeyCode.Space)) { rb.velocity = new Vector2(0, JumpForce); }

}
void FixedUpdate()
{
    float move = Input.GetAxis("Horizontal");
    Move(new Vector3(-Input.GetAxis("Vertical"), 0, move));
    anim.SetBool("Walk", move != 0);
    anim.SetBool("Run", speed == RunSpeed && move != 0);
    if (move > 0 && !isFacingRight)
        Flip();
    else if (move < 0 && isFacingRight)
        Flip();
}

public void Move(Vector3 direction)
{
    _ = Project(direction.normalized);
    Vector2 directionAlongSurface = Input.GetAxis("Horizontal") * transform.right;
    Vector2 offset = speed * Time.deltaTime * directionAlongSurface;

    rb.MovePosition(rb.position + offset);
}

public Vector3 Project(Vector3 forward)
{
    return forward - Vector3.Dot(forward, _normal) * _normal;
}

private void OnCollisionEnter(Collision collision)
{
    _normal = collision.contacts[0].normal;
}

private void Flip()
{
    isFacingRight = !isFacingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}
void OnTriggerStay2D(Collider2D col)
{
    if (col.tag == "Ground") is_ground = true;
}
void OnTriggerExit2D(Collider2D col)
{
    if (col.tag == "Ground") is_ground = false;
}
}

Но после этого игрок стал медленно падать. Я изменил в RigidBody 2D параметр Gravity Scale на 28 и стало работать все нормально, до тех пор пока я не начал делать прыжок. Игрок не прыгал. Даже когда я задал параметр Gravity Scale обратно на 1 то игрок все равно не прыгал, только медленно падал(я не ставил проверку на прикосновение с землей). Заранее спасибо.


Ответы (0 шт):