как убрать скольжение при использовании 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;
}
}
}