Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику 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);
}
}
Происходит следующее. Вы КАЖДЫЙ кадр ADD (добавляете) силу (которую вы даже не множите на drltaTime) и достигнув целевой высоты сила никуда не девается и он летит дальше, после чего падает и опускаясь ниже целевой высоты вы снова начинаете кормить объект импульсами силы. Отсуда он и выписывает синусойды.
float LiftSpeed = 1;
rb.velocity = new Vector3(rb.velocity.x, (force-rb.transform.position.y)*LiftSpeed, rb.velocity.z);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возможно удалить систему управления версиями из решения в Visual Studio 2019 с помощью интерфейса?
Знаю, что подобных вопросов было много, но ответа в них для себя, к сожалению, найти не смогВероятно буду писать глупости, не судите строго,...
Не страшно же, если во время работы цикла я изменю его условие?