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 то игрок все равно не прыгал, только медленно падал(я не ставил проверку на прикосновение с землей). Заранее спасибо.