Как поставить вертикальную черту в конце заполненной области горизонтального слайдера unity3d - PullRequest
0 голосов
/ 07 февраля 2019

Я использую горизонтальный слайдер unity3d, чтобы показать жизнь персонажа, как показано ниже enter image description here

Но я хочу показать вертикальную черту в конце заполненной области, как на изображении ниже enter image description here

Есть идеи?как этого добиться.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я решил, это было довольно просто!Я просто добавил текстуру вертикальной полосы в качестве дочернего элемента изображения заливки внутри слайдера и держал ее по правому краю.

ура!

0 голосов
/ 07 февраля 2019

Вы можете сделать это, Lerping localPosition вашей вертикальной чертой.

Это будет выглядеть примерно так:

GameObject verticalBar; //the gameobject you want to use
GameObject player; //Assume this is your play that has the health property
Vector3 startPos; //start position of your total healthbar
Vector3 endPos; //end position of your total healthbar

private void UpdateVerticalBarPosition()
{
    float normalized = player.currentHealth / player. maxHealth //this normalizes your current health to be between 0 and 1 
    if(!float IsNaN(normalized))//(optional) makes sure the value is valid.
    {
        verticalBar.transform.localPosition = Vector3.Lerp(startPos, endPos, normalized);
    }
}

Этот метод нормализует ваш текущий HP.Это означает, что если, например, у вашего игрока осталось 70 единиц здоровья из 100 единиц здоровья, нормализованное значение будет равно 0.7f, или 70% его общего здоровья.

Используя это нормализованное значение в Vector3.Lerp,находится между startPos и endPos (здесь startPos будет начальной позицией вашей общей шкалы здоровья, поэтому левая сторона вашей серой панели. И endPos конечная позиция вашей общей шкалы здоровья, поэтому праваясторона вашей серой полосы) поместит вертикальную полосу на 70% вдоль полосы здоровья.Это должно быть той же точкой, где ваша желтая / оранжевая полоса останавливается.

Если вы вызовете этот метод один раз, когда hp изменился, он перейдет к новому значению.Но если вы постепенно получаете урон, вы также можете запустить его в цикле, чтобы он плавно скользил по нему.

В качестве альтернативы.Если вы используете компонент Slider Unity для своей панели здоровья, вы также можете просто использовать Slider.handleRect.находится в документации здесь , которая будет выглядеть примерно так

Slider healthBar; //the slider used for your healthbar
GameObject verticalBar; // the bar you want displayed at the end of the healthbar

Start()
{
    healthBar.handleRect = verticalBar;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...