Unity C# Ненужная задержка в выполнении кода
Пишу свой контроллер автомобиля. Но функции кода обрабатываются с задержкой. Отпускаю кнопку газа, машина некоторое время продолжает получать крутящий момент. После торможения начинаю газовать, опять же пару секунд никакой реакции на нажатие кнопки.
Видео, как это работает: YouTube
Код:
using System.Collections.Generic;
using UnityEngine;
public class VCC_MAIN : MonoBehaviour
{
[Header("Wheels Data")]
public VCC_WHEEL FLWheel;
public VCC_WHEEL FRWheel;
public VCC_WHEEL RLWheel;
public VCC_WHEEL RRWheel;
public List<WheelCollider> drivableWC;
[Header("Engine Data")]
public float maxSpeed;
public float engineTorque;
public float brakePower;
[Header("Rig Data")]
public Transform centerOfMass;
[Header("Debug Data")]
public float verticalInput;
public float currSpeed;
[HideInInspector] public Rigidbody rig;
private void Awake()
{
rig = GetComponent<Rigidbody>();
rig.centerOfMass = transform.InverseTransformPoint(centerOfMass.transform.position);
drivableWC.Add(RLWheel.GetComponent<WheelCollider>());
drivableWC.Add(RRWheel.GetComponent<WheelCollider>());
}
private void FixedUpdate()
{
verticalInput = Mathf.Round(Input.GetAxis("Vertical"));
currSpeed = Mathf.Round(rig.velocity.magnitude * 3.6f);
if (verticalInput != 0 && currSpeed < maxSpeed)
{
ApplyTorque(engineTorque);
ApplyBrake(0);
}
else if (verticalInput == 0)
{
ApplyTorque(0);
ApplyBrake(brakePower / 100f);
}
}
private void ApplyTorque(float torque)
{
drivableWC[0].motorTorque = torque * verticalInput;
drivableWC[1].motorTorque = torque * verticalInput;
}
private void ApplyBrake(float brake)
{
drivableWC[0].brakeTorque = brake;
drivableWC[1].brakeTorque = brake;
}
}
Пробовал и в void Update запускать его, и Input.GetAxisRow, не помогло...
Источник: Stack Overflow на русском