Что мне нужно - чтобы капсула передвигалась по ровной или наклоненной (не более 60град) поверхности с равной скоростью, ну и прыгал.
На данный момент я передвигаю Rigidbody таким образом
public float SpeedCurrent = 2f;
public float Gravity = -230f;
public float maxVelocityChange = 10f;
private Vector3 velocity;
private Vector3 velocityChange;
private void FixedUpdate(){
Vector3 targetVelocity = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
targetVelocity = transform.TransformDirection(targetVelocity) * Speed;
velocity = RB.velocity;
velocityChange = (targetVelocity - velocity);
velocityChange.x = Mathf.Clamp(velocityChange.x, -maxVelocityChange, maxVelocityChange);
velocityChange.z = Mathf.Clamp(velocityChange.z, -maxVelocityChange, maxVelocityChange);
CheckSphereCenterBottom.localPosition = new Vector3(0f, CheckSphereCenterBottomPositionY, 0f);
if(Physics.CheckSphere(CheckSphereCenter.position, CheckSphereCenterRadius, 7)){
Ground = true;
if(velocityChange.y < 0f){ velocityChange.y = 0f; }
}else{
Ground = false;
if(velocityChange.y > -4f){
velocityChange.y += Gravity * Time.fixedDeltaTime;
}
}
RB.AddForce(velocityChange, ForceMode.VelocityChange);
}
Первая проблема это то что поднимаясь на горку он движется немного быстрее обычного (на 10% примерно).
И тут же вопрос - как в моём случае ему сделать прыжок?
В инете куча примеров по типу
if(Ground && Input.GetKeyDown(KeyCode.Space)){
RB.AddForce(0f, JumpPower, 0f, ForceMode.Impulse);
}
но в таком случае он резко телепортируется на на верхнюю позицию и потом падает под действием гравитации, а хотелось бы чтобы прыгал как и везде, плавно и реалистично...
Подскажите как сделать правильно?
Посоветуйте статьи где описано как это сделать.