When I go on a slope and try to turn fast I just go into the air then fall back down to the slope and when I reach the top it dose a little jump plz help. This is my player code for the Movement.
Ps: The Comments are for me I don’t know if I want jumping in the game yet or naw
using Player.Manager;
using UnityEngine;
namespace Player.Controller
{
public class PlayerController : MonoBehaviour
{
[SerializeField] private float AnimBlendSpeed = 8.9f;
[SerializeField] private Transform CameraRoot;
[SerializeField] private Transform Camera;
[SerializeField] private float UpperLimitl = -40f;
[SerializeField] private float LowerLimit = 70f;
[SerializeField] private float MouseSensativity = 21.9f;
//[SerializeField] private float JumpFactor = 260f;
//[SerializeField] private float Dis2Ground = 0.8f;
//[SerializeField] private LayerMask GroundCheck;
//[SerializeField] private float AirResistance = 0.8f;
private Rigidbody _PlayerRigidBody;
private InputManeger _InputManeger;
private Animator _Animator;
//private bool _grounded;
private bool _HasAnimator;
private int _xVelHash;
private int _yVelHash;
//private int _jumpHash;
//private int _groundHash;
//private int _fallingHash;
//private int _zVelHash;
private int _crouchHash;
private float _xRotation;
private const float _walkSpeed = 2f;
private const float _runSpeed = 5f;
private Vector2 _currentVelocity;
void Start()
{
_HasAnimator = TryGetComponent<Animator>(out _Animator);
_PlayerRigidBody = GetComponent<Rigidbody>();
_InputManeger = GetComponent<InputManeger>();
_xVelHash = Animator.StringToHash("X_Velocity");
_yVelHash = Animator.StringToHash("Y_Velocity");
//_jumpHash = Animator.StringToHash("Jump");
//_fallingHash = Animator.StringToHash("Falling");
//_zVelHash = Animator.StringToHash("Z_Velocity");
//_groundHash = Animator.StringToHash("Grounded");
_crouchHash = Animator.StringToHash("Crouched");
}
private void FixedUpdate()
{
Move();
//HandleJump();
HandleCrouch();
//SampleGround();
}
private void LateUpdate()
{
CameraMovements();
}
private void Move()
{
if (!_HasAnimator) return;
float targetSpeed = _InputManeger.Run ? _runSpeed : _walkSpeed;
if (_InputManeger.Move == Vector2.zero) targetSpeed = 0f;
if (_InputManeger.Crouch) targetSpeed = 1.5f;
//if (_grounded)
//{
_currentVelocity.x = Mathf.Lerp(_currentVelocity.x, _InputManeger.Move.x * targetSpeed, AnimBlendSpeed * Time.fixedDeltaTime);
_currentVelocity.y = Mathf.Lerp(_currentVelocity.y, _InputManeger.Move.y * targetSpeed, AnimBlendSpeed * Time.fixedDeltaTime);
var xVelDifferance = _currentVelocity.x - _PlayerRigidBody.velocity.x;
var zVelDifferance = _currentVelocity.y - _PlayerRigidBody.velocity.z;
_PlayerRigidBody.AddForce(transform.TransformVector(new Vector3(xVelDifferance, 0, zVelDifferance)), ForceMode.VelocityChange);
//}
//else
//{
// _PlayerRigidBody.AddForce(transform.TransformVector(new Vector3(_currentVelocity.x * AirResistance, 0, _currentVelocity.y * AirResistance)), ForceMode.VelocityChange);
//}
_Animator.SetFloat(_xVelHash, _currentVelocity.x);
_Animator.SetFloat(_yVelHash, _currentVelocity.y);
}
private void CameraMovements()
{
if (!_HasAnimator) return;
var Mouse_X = _InputManeger.Look.x;
var Mouse_Y = _InputManeger.Look.y;
Camera.position = CameraRoot.position;
_xRotation -= Mouse_Y * MouseSensativity * Time.smoothDeltaTime;
_xRotation = Mathf.Clamp(_xRotation, UpperLimitl, LowerLimit);
Camera.localRotation = Quaternion.Euler(_xRotation, 0, 0);
_PlayerRigidBody.MoveRotation(_PlayerRigidBody.rotation * Quaternion.Euler(0, Mouse_X * MouseSensativity * Time.smoothDeltaTime, 0));
}
private void HandleCrouch() => _Animator.SetBool(_crouchHash, _InputManeger.Crouch);
//private void HandleJump()
//{
// if(!_HasAnimator) return;
// if (!_InputManeger.Jump) return;
// _Animator.SetTrigger(_jumpHash);
//}
//public void JumpAddForce()
//{
// _PlayerRigidBody.AddForce(-_PlayerRigidBody.velocity.y * Vector3.up, ForceMode.VelocityChange);
// _PlayerRigidBody.AddForce(Vector3.up * JumpFactor, ForceMode.Impulse);
// _Animator.ResetTrigger(_jumpHash);
//}
//private void SampleGround()
//{
// if (!_HasAnimator) return;
// RaycastHit hitInfo;
// if (Physics.Raycast(_PlayerRigidBody.worldCenterOfMass, Vector3.down, out hitInfo, Dis2Ground + 0.1f, GroundCheck))
// {
// _grounded = true;
// SetAnimationGounded();
// return;
// }
// _grounded = false;
// _Animator.SetFloat(_zVelHash, _PlayerRigidBody.velocity.y);
// SetAnimationGounded();
// return;
//}
//private void SetAnimationGounded()
//{
// _Animator.SetBool(_fallingHash, !_grounded);
// _Animator.SetBool(_groundHash, _grounded);
//}
//}
}
}