Не могу понять , как изменить физику в юнити
Создаю свой шутер от первого лица. Сделал скрипт передвижения и прыжка. С движением все нормально, но когда начинаю прыгать персонаж взлетает , а потом очень долго падает. Пробовал изменять параметр mass в rigidbody, но ничего не меняется, персонаж так и остается плавать в воздухе и медленно опкскаться. Скрипт на прыжок и передвижение оставлю ниже.
//Скрипт передвижения
using UnityEngine;
public class Jump : MonoBehaviour
{
Rigidbody rigidbody;
public float jumpStrength = 2;
public event System.Action Jumped;
[SerializeField, Tooltip("Prevents jumping when the transform is in mid-air.")]
GroundCheck groundCheck;
void Reset()
{
// Try to get groundCheck.
groundCheck = GetComponentInChildren<GroundCheck>();
}
void Awake()
{
// Get rigidbody.
rigidbody = GetComponent<Rigidbody>();
}
void LateUpdate()
{
// Jump when the Jump button is pressed and we are on the ground.
if (Input.GetButtonDown("Jump") && (!groundCheck || groundCheck.isGrounded))
{
rigidbody.AddForce(Vector3.up * 100 * jumpStrength);
Jumped?.Invoke();
}
}
}
// Скрипт передвижения
using UnityEngine;
public class FirstPersonMovement : MonoBehaviour
{
public float speed = 5;
[Header("Running")]
public bool canRun = true;
public bool IsRunning { get; private set; }
public float runSpeed = 9;
public KeyCode runningKey = KeyCode.LeftShift;
Rigidbody rigidbody;
/// <summary> Functions to override movement speed. Will use the last added override. </summary>
public List<System.Func<float>> speedOverrides = new List<System.Func<float>>();
void Awake()
{
// Get the rigidbody on this.
rigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Update IsRunning from input.
IsRunning = canRun && Input.GetKey(runningKey);
// Get targetMovingSpeed.
float targetMovingSpeed = IsRunning ? runSpeed : speed;
if (speedOverrides.Count > 0)
{
targetMovingSpeed = speedOverrides[speedOverrides.Count - 1]();
}
// Get targetVelocity from input.
Vector2 targetVelocity =new Vector2( Input.GetAxis("Horizontal") * targetMovingSpeed, Input.GetAxis("Vertical") * targetMovingSpeed);
// Apply movement.
rigidbody.velocity = transform.rotation * new Vector3(targetVelocity.x, rigidbody.velocity.y, targetVelocity.y);
}
}
Помогите , пожалуйста.