Задать вопрос
Zefirot
@Zefirot

Как правильно передвигать Rigidbody?

Что мне нужно - чтобы капсула передвигалась по ровной или наклоненной (не более 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);
  }

но в таком случае он резко телепортируется на на верхнюю позицию и потом падает под действием гравитации, а хотелось бы чтобы прыгал как и везде, плавно и реалистично...
Подскажите как сделать правильно?
Посоветуйте статьи где описано как это сделать.
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Не на 10%, а на корень из 2, и проблема не в горке, а в движении по диагонали с приращением сразу по двум осям.
Чтобы не улетало в небо, отрегулируй силу. Плавно и реалистично делают анимацией и подбором индивидуальных параметрах.
Да и нужен ли тут вообще ригидбоди если самой физикой тут и не пахнет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы