Проблема топливной системы Unity 2D для автомобиля
Я тоже новичок, учусь кодировать с помощью Unity. Я хочу настроить топливную систему так, чтобы при движении автомобиля ГАЗ расходовался. Но мой слайдер пользовательского интерфейса (который показывает указатель уровня топлива) просто не работает. Пожалуйста, помогите по приведенным ниже 2 скриптам:
Все, пожалуйста, не обращайте внимания на код, который я пытаюсь выучить из каждого видео, которое могу. Я просто не могу найти книгу, которая помогла бы изучить C# и Unity вместе. Я знаю большинство основ, но все же.
Пожалуйста, помогите!! Огромное спасибо...
Что я уже пробовал:
public class PlayerController : MonoBehaviour { private Rigidbody2D rb2d; private int count; public float speed; public Text countText; FuelSystem fuelSystem; // Start is called before the first frame update void Start() { rb2d = GetComponent<Rigidbody2D>(); SetCountText(); fuelSystem = GetComponent<FuelSystem>(); } void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector2 movement = new Vector2(moveHorizontal, moveVertical); rb2d.AddForce(movement * speed); fuelSystem.fuelComsumptionRate = speed; fuelSystem.ReduceFuel(); if (Input.GetButtonDown("Jump")) { gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, 2.5f), ForceMode2D.Impulse); } } private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag ("Coin")) { other.gameObject.SetActive(false); count = count + 1; SetCountText(); } } void SetCountText() { countText.text = "Coins " + count.ToString() + " of 3"; } }
public class FuelSystem : MonoBehaviour { public float startFuel; public float maxFuel; public float fuelComsumptionRate; public Slider fuelIndicatorSld; public Text fuelIndicatorTxt; void Start() { if (startFuel > maxFuel) { startFuel = maxFuel; fuelIndicatorSld.maxValue = maxFuel; UpdateUI(); } } public void ReduceFuel () { startFuel = Time.deltaTime * fuelComsumptionRate; UpdateUI(); } void UpdateUI() { fuelIndicatorSld.value = startFuel; fuelIndicatorTxt.text = "Fuel Left:" + startFuel.ToString("0") + " %"; if (startFuel <= 0) { startFuel = 0; fuelIndicatorTxt.text = "Out of Gas!"; } } }