Хорошо, я не уверен, как воссоздать это, используя скорость, но похоже, что это работает:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float walkSpeed = 15f;
public float jumpSpeed = 15f;
public float gravity = 50f;
Rigidbody rb;
bool pressedJump = false;
float hAxis;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
hAxis = Input.GetAxisRaw("Horizontal");
}
void FixedUpdate()
{
WalkHandler();
JumpHandler();
GravityHandler();
}
void WalkHandler()
{
rb.velocity = new Vector2(0f, rb.velocity.y);
Vector3 movement = new Vector2(hAxis * walkSpeed * Time.deltaTime, 0f);
rb.MovePosition(transform.position + movement);
}
void JumpHandler()
{
if (Input.GetButtonDown("Jump"))
{
if (!pressedJump)
{
pressedJump = true;
Vector3 jumpVector = new Vector3(0f, jumpSpeed, 0f);
rb.velocity = rb.velocity + jumpVector;
}
}
else
{
pressedJump = false;
}
}
// Check if the object is grounded
bool CheckGrounded()
{
return true;
}
void GravityHandler()
{
rb.AddForce(Vector3.down * gravity * rb.mass);
}
}
Игнорируйте метод CheckGounded