Как сделать теккен / уличный боец ​​как слайдер / бар - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь создать индикатор работоспособности, который со временем переходит от healthValueX к healthValueY.В настоящее время я уменьшаю значение следующим образом:

void Update ()
{
    myVar-= 100 * Time.deltaTime;
    slider.value = myVar;
}

и есть 2 метода, которые я вызываю по нажатию, чтобы дополнительно управлять ползунком.

void addHealth()
{
    myVar+=250; //Harcoded for the short question
}
void forceRemoveHealth()
{
    myVar-=250; //Hardcoded for the short question
}

Мне нравится переход вUpdate выглядит хорошо.Но когда я справляюсь с огромными изменениями, например, в addHealth() или forceRemoveHealth(), я бы закрашивал разрыв и затем переходил, вместо того чтобы перейти с 300 единиц здоровья непосредственно к 50, например.

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

1 Ответ

0 голосов
/ 28 апреля 2019

Вы можете использовать Mathf.Lerp () для интерполяции между 300 и 50, например, ниже:

public float start;
public float end;

// Change in units/sec.
public float speed = 1.0F;

private float startTime;

// Total distance between the start and end.
private float length = Mathf.Abs(start - end);

public healthBarLength = start;

void Start()
{
    startTime = Time.time;
}

void Update()
{
    float delta = (Time.time - startTime) * speed;
    float fracDelta = delta / length;
    healthBarLength = Vector3.Lerp(start, end, fracDelta);
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...