как убрать скольжение при использовании AddForce

Желательно убрать через скрипт

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

    enum MovState
    {
        Jumping,
        Walking,
        //Idle
    }

public class Moveme : MonoBehaviour
{
    RaycastHit hit;
    public LayerMask whatIsGround;
    public Transform orientatio;
    public KeyCode frvd, back, left, right;
    Rigidbody rb;
    public float MaxSpeedo;
    public float JumpForce;
    public float WalkSpeed;
    [SerializeField]
    MovState CurMov;
    public float CurSpeed;
    public float RunSpeed;
    Collider coll;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        coll = GetComponent<Collider>();
        StartWalk();
        Cursor.lockState = CursorLockMode.Locked;
    }

    void StartWalk()
    {
        CurMov = MovState.Walking;
        CurSpeed = WalkSpeed;
    }

    private bool grouded()
    {
        Physics.Raycast(coll.bounds.center, Vector3.down, out hit, coll.bounds.extents.y + 0.1f, whatIsGround);
        return hit.collider != null;
    }

    public void Inputs()
    {
        if (Input.GetKeyDown(KeyCode.Space) && grouded())
        {
            Jump();
        }

        if (Input.GetKeyDown(KeyCode.LeftShift) || Input.GetKeyDown(KeyCode.RightShift))
        {
            CurSpeed = RunSpeed;
        }

        if (Input.GetKeyUp(KeyCode.LeftShift) || Input.GetKeyUp(KeyCode.RightShift))
        {
            CurSpeed = WalkSpeed;
        }
    }

    void Jump()
    {
        rb.AddForce(Vector3.up * JumpForce);
        CurMov = MovState.Jumping;
    }

    public void MovOnGround()
    {
        float hor = Input.GetAxis("Horizontal");
        float ver = Input.GetAxis("Vertical");
        Vector3 PlayerMovr = ver * CurSpeed * orientatio.transform.forward;
        Vector3 PlayerMovl = hor * CurSpeed * orientatio.transform.right;
        rb.AddForce(PlayerMovr);
        rb.AddForce(PlayerMovl);
    }

    public void InJump()
    {
        float hor = Input.GetAxis("Horizontal");
        float ver = Input.GetAxis("Vertical");
        Vector3 PlayerMovr = ver * CurSpeed /* Time.deltaTime */* orientatio.transform.forward / 2;
        Vector3 PlayerMovl = hor * CurSpeed /* Time.deltaTime */* orientatio.transform.right / 2;
        rb.AddForce(PlayerMovr);
        rb.AddForce(PlayerMovl);
    }

    void AFK() {}

    void Update()
    {
        if (grouded() )
        CurMov = MovState.Walking;
        Inputs();
        switch (CurMov)
        {
            case MovState.Walking:        
                MovOnGround();
                break;
            case MovState.Jumping:
                InJump();
                break;
            default:
                Debug.LogError("There is a problem with enum.");
                break;
        }
    }
}



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