Переместите преобразование со скоростью в KPH и получите скорость преобразования в KPH - PullRequest
0 голосов
/ 10 сентября 2018

Я перемещаю преобразование в KPH Speed ​​и стремлюсь получить его скорость также в KPH (для целей тестирования)

Вот способ переместить преобразование со скоростью в KPH . Его 160 л.с.

 transform.Translate(Vector3.forward * 160f / 3.6f * Time.deltaTime);

Вот фрагмент кода, который показывает скорость в KPH

public double Speed;
    private Vector3 startingPosition, speedvec;

    void Start()
    {
        startingPosition = transform.position;
    }

    void FixedUpdate()
    {
        speedvec = ((transform.position - startingPosition) / Time.deltaTime);
        Speed = (int)(speedvec.magnitude) * 3.6; 

        startingPosition = transform.position;
        //text.text = Speed + "km/h";  // or mph

    }

Теперь кто-нибудь может сказать мне, в чем проблема? Либо я не двигаю преобразование правильно, либо получаю скорость в км / ч, не так?

Как мне переместить объект со скоростью в KPH и получить его скорость в KPH.

1 Ответ

0 голосов
/ 10 сентября 2018

что это делает? :)

speedvec = ((transform.position - startingPosition) / Time.deltaTime);

Я прочитал:

/*distance vector from start position*/ totalDistance=(transform.position - startingPosition).magnitude

а почему это?

/ Time.deltaTime

расстояние / время в последнем кадре? (DeltaTime = время последнего кадра)

Итак, решение: если вы используете постоянную скорость:

speed =totalDistance/totalTime;//distance since Start()/time since Start()

если вы не используете постоянную скорость, вы должны зарегистрировать позицию в одном кадре и рассчитать скорость, используя ее позицию в следующем кадре, поэтому у вас будет:

speedInThisFrame=distanceInThisFrame/Time.deltaTime;

Как бы я это сделал:

  • использовать твердое тело;
  • используйте скорость твердого тела, чтобы переместить его;
  • это вектор, поэтому rb.velocity=transform.forward*speed*Time.deltaTime; переместить твёрдое тело вашего объекта. // где скорость представляет расстояние в м, которое ваше твердое тело будет преодолевать за 1 секунду.

  • скорость в м / с. = hardbody.velocity.magnitude;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...