Ранее мы научились писать таймер в Unity, пришло время научиться делать спидометр в Unity! Отображение такой переменной, как «Скорость» зависит от многих факторов, например, от жанра игры или учета конечного результата. В целом, формула расчета скорости и отображение его на экране это простая задача. Сразу скажу, что будут использованы материалы, которые использовались в моем проекте.
Пишем спидометр в Unity
Что означает последняя фраза? Сам код и скриншот(ы), будут взяты и собственных наработок. Это значит, что его можно использовать в качестве примера. Но я думаю каждому инди-разработчику и так ясно, что любой, представленный в интернете код, нужно адаптировать под свои нужды. Давайте взглянем на работу таймера:
Выглядит симпатично, как считаете? Давайте обратим внимание сразу на правую часть скриншота. В инспекторе виден компонент скрипт, а внутри 2 объекта: Player и CurrentSpeed (text). Так как я использую текстовый компонент для отображение динамических данных, пришлось немножко позаморачиваться… Давайте перейдем ко внутренней части.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using UnityEngine; using UnityEngine.UI; public class Speedometer : MonoBehaviour { public GameObject Player; public Text SpeedText; public float CurrentSpeed { get { return Player.GetComponent<Rigidbody>().velocity.magnitude * 3.6f; } } private void Update() { SpeedText.text = Mathf.RoundToInt(CurrentSpeed).ToString(); } } |
Итак, в принципе не так уж и сложно. Собираем результат расчета формулы в строке get { возвращаемое значение от компонента RigidBody.velocity.magnitude умноженное на 3.6 фрейма. Получаем адекватную скорость. Далее в методе Update преобразуем значение переменной CurrentSpeed до целочисленного и далее преобразуем это в строку. Результат присваивается компоненту текст текстовому объекту SpeedText. Ну и все, в принципе получилось очень простенько и кратко. Можете использовать этот код в своих разработках. Если вы подпишитесь на наш Youtube-канал или группу в ВК, или любой другой ресурс, для нас это будет крайне высокой наградой. А если есть желание помочь развитию проекта, то воспользуйтесь формой ниже для доната. Спасибо за внимание!