Поднять объект в воздух [закрыт]

109
28 сентября 2021, 21:40
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Есть свойства:

float height = 8f,
Force = 0f;
public float force {
    get {
        return Engine;
    }
    set {
        Force = value;
    }
}

И метод:

private void Lift() {
    var up = 1 - Mathf.Clamp(rb.transform.position.y / height, 0, 1);
    up = Mathf.Lerp(0f, height, up);
    rb.AddRelativeForce(Vector3.up * up);
}

Он работает, но когда объект поднимает в воздух, он начинает создавать люфт движения: вверх/вниз, вверх/вниз и со временем перестает это делать и успокаивается.
Как мне избавиться от этого люфта?

Метод Lift() объявляю в Update().
force набирается по нажатию на кнопку:

private IEnumerator launch() {
    while (force < 25) {
        force += 0.1f;
        yield return new WaitForSeconds(0.01f);
    }
}
Answer 1

Происходит следующее. Вы КАЖДЫЙ кадр ADD (добавляете) силу (которую вы даже не множите на drltaTime) и достигнув целевой высоты сила никуда не девается и он летит дальше, после чего падает и опускаясь ниже целевой высоты вы снова начинаете кормить объект импульсами силы. Отсуда он и выписывает синусойды.

float LiftSpeed = 1;
rb.velocity = new Vector3(rb.velocity.x, (force-rb.transform.position.y)*LiftSpeed, rb.velocity.z);
READ ALSO
Удалить систему управления версиями в VS 2019

Удалить систему управления версиями в VS 2019

Возможно удалить систему управления версиями из решения в Visual Studio 2019 с помощью интерфейса?

178
Паттерн repository и смена ORM

Паттерн repository и смена ORM

Знаю, что подобных вопросов было много, но ответа в них для себя, к сожалению, найти не смогВероятно буду писать глупости, не судите строго,...

102
Изменить условие цикла при выполнении

Изменить условие цикла при выполнении

Не страшно же, если во время работы цикла я изменю его условие?

153