53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using UnityEngine;
|
||
|
||
namespace _Project.Scripts.PlayerUtils
|
||
{
|
||
public class PlayerUI : MonoBehaviour
|
||
{
|
||
[Header("Настройки Интерфейса")]
|
||
[SerializeField] private bool showSpeedometer = true;
|
||
|
||
private PlayerMovement movement;
|
||
|
||
private void Start()
|
||
{
|
||
// Берем ссылку на компонент передвижения через фасад Player
|
||
movement = Player.Instance.Movement;
|
||
}
|
||
|
||
private void OnGUI()
|
||
{
|
||
if (!showSpeedometer || movement == null) return;
|
||
|
||
// Читаем публичное свойство скорости (мы добавим его ниже)
|
||
float speed = movement.CurrentSpeed;
|
||
float csUnits = speed * 38.5f;
|
||
|
||
GUIStyle style = new GUIStyle
|
||
{
|
||
fontSize = 24,
|
||
fontStyle = FontStyle.Bold
|
||
};
|
||
|
||
string state = "";
|
||
|
||
// Настраиваем цвет и текст состояния
|
||
if (movement.IsSliding)
|
||
{
|
||
style.normal.textColor = Color.yellow;
|
||
state = " [SLIDE]";
|
||
}
|
||
else if (!movement.IsGrounded)
|
||
{
|
||
style.normal.textColor = Color.green;
|
||
state = " [AIR]";
|
||
}
|
||
else
|
||
{
|
||
style.normal.textColor = Color.white;
|
||
}
|
||
|
||
GUI.Label(new Rect(30, 30, 500, 50), $"Speed: {speed:F1} m/s ({csUnits:F0} u/s){state}", style);
|
||
}
|
||
}
|
||
} |