В настоящее время я работаю над панелью безопасности, которая медленно истощает меньшее количество здоровья, которое у вас есть. Я следовал этому руководству, чтобы получить нужные мне сады: https://www.youtube.com/watch?v=NgftVg3idB4Извлечение количества масштабирования из Canvas Scaler (Unity)
Вкратце, он использует слой маски и отдельную зеленую полосу, чтобы указать количество здоровья. Перемещая зеленую полосу влево, она исчезает за слоем маски и, таким образом, показывает все меньше и меньше здоровья. метод для расчета своей позиции на основе количества здоровья здесь: Код (CSharp):
float maxXValue = healthTransform.position.x;
float minXValue = healthTransform.position.x - healthTransform.rect.width;
private void HandleHealth()
{
Stats attachedStats = attachedObject.GetComponent<Stats>();
float currentXValuePlayer = MapValues(attachedStats.currentHealth, 0, attachedStats.maxHealth, minXValue, maxXValue);
healthTransform.position = new Vector3(currentXValuePlayer, cachedY);
}
private float MapValues(float x, float inMin, float inMax, float outMin, float outMax)
{
return (x - inMin) * (outMax - outMin)/(inMax - inMin) + outMin;
}
/*
EXPLANATION:
attachedStats.currentHealth is the current health the player has
attachedStats.maxHealth is the maximum amount of health the player can have
minXValue is the furthest left point the bar is at when health is 0
maxXValue is the furthest right point the bar is at when health is full
*/
Это настройка я использую для холста healthbar рисуется на.
Беда в том, (вероятно), что из-за масштабирования холста делает, healthTransform.rect.width еще возвращает исходный размер healthbar и не новый, масштабируемого размер. Итак, есть ли способ узнать, насколько сильно Canvas Scaler масштабирует вещи?
Спасибо вам большое! Это была моя проблема, я уже задавался вопросом, что такое scaleFactor. Но, спасибо тонну, это застало меня в тупик, вы просто сделали мой день! – Lionlake