При float менее 0.2f Unity не прибавляет ускорение объекту
Господа! Такая проблема: хочу сделать простенькую игрульку в Unity 3D, а-ля драг-рейсинг. Как известно, такая игра - ничто, если в ней нет равномерного ускорения. И чтобы сделать его, я обратился к прибавлению float = 0,1f к начальной скорости в FixedUpdate (т.к комп достаточно мощный и в простом Update машинка быстро выйдет на сверхзвук). Проблема в том, что при прибавлении 0,1f, значение текущей скорости начинает хаотично меняться, где-то далеко после запятой и машинка не двигается. Отследил значения переменной скорости, а там, что-то вроде "0,0012637963-5е". Такое же безобразие при 0,19f. Но стоит только установить 0,2f или больше, как всё начинает прекрасно работать. Поскольку, хочется реализовать режим прокачки автомобиля, то 0,2f многовато для начала и хочется получить изначально машинку гораздо медленнее. Как победить непонятные вычисления Unity? Заранее благодарю! Ниже сокращенный код класса:
using UnityEngine;
public class DragCar: MonoBehaviour
{
private float _acceleration = 0.1f; // *если здесь меньше 0,2f то ничего не работает*
private float _maxSpeed = 100f;
private float _speed = 0;
[SerializeField] private float _currentSpeed = 1f;
[SerializeField] private float _visualCurrentSpeed = 0;
private Rigidbody _rb;
void Start()
{
_rb= GetComponent<Rigidbody>();
}
void FixedUpdate()
{
_visualCurrentSpeed = _rb.velocity.z * 3.6f;
_currentSpeed = _rb.velocity.z;
if (Input.GetKey(KeyCode.UpArrow))
{
if (_currentSpeed >= _maxSpeed)
{
_speed = _maxSpeed;
_rb.velocity = new(0, 0, _speed);
}
else
{
_rb.velocity = new(0, 0, _currentSpeed + _acceleration); //вот здесь всё ломается
}
}
}
}