Member 14898413 Ответов: 1

Как заставить спрайтов расти и сжиматься по команде.


Я пытаюсь заставить спрайта уменьшаться и расти по команде, но не могу понять, как это сделать. Любая помощь будет оценена по достоинству. Это мой текущий код.
transform.localScale += new Vector3(0.2f,0.2f,0.5f);Input.GetAxis("Fire2");


Что я уже пробовал:

Все еще довольно новичок в C#, не могу понять, как его написать.
transform.localScale(Input.GetAxis("Fire2"), 0.2f,0.2f);
transform.localScale.System.Collections(Vector3)(0,0 Input.GetAxis("Fire2")
transform.localScale(Input.GetAxis("Fire2");

Afzaal Ahmad Zeeshan

А нынешняя проблема есть?

Member 14898413

Когда я запускаю, transform.localScale += new Vector3(0.2 f,0.2 f,0.5 f); Input.GetAxis("Fire2") спрайты начинают расти и никогда не останавливаются, и это не по команде.

1 Ответов

Рейтинг:
0

F-ES Sitecore

Вы говорите, что хотите, чтобы он рос и сжимался, но не указываете, когда\как он растет и когда\как он сжимается. Если вы хотите расти на Fire2 и сжиматься на Fire1, то вам понадобится код типа

var f1 = Input.GetAxis("Fire1");
var f2 = Input.GetAxis("Fire2");

if (f1 > 0)
{
    transform.localScale += new Vector3(0f, 0f, -0.01f * f1);
}
else if (f2 > 0)
{
    transform.localScale += new Vector3(0f, 0f, 0.01f * f2);
}


Помимо того, что у меня были разные условия для роста и сжатия, я умножил значение оси на 0,01, так как кнопки огня возвращают 0 или 1, а рост в 1 раз-это довольно экстремально. Технически вы можете просто жестко закодировать это значение, поскольку умножение на 1 ничего не делает, но я предполагаю, что элементы управления с аналоговыми кнопками огня, такие как xbox и ps4, могут возвращать значение от 0 до 1 в зависимости от того, насколько оно нажато.

Если вы хотите, чтобы спрайт "подпрыгнул", то есть вырос до определенного размера, а затем снова уменьшился и так далее, вам понадобится что-то вроде этого;

private float scaleChange = 0.01f;

void Update()
{
    var f2 = Input.GetAxis("Fire2");

    if (f2 > 0)
    {
        // Fire2 is held so scale the z axis by the scaleChage value
        transform.localScale += new Vector3(0f, 0f, scaleChange * f2);

        // check if we have reached the upper or lower bound of the scale
        if (transform.localScale.z >= 1.5 || transform.localScale.z <= 0.5)
        {
            // we are either at the max scale or the min scale so reverse the scaling by multiplying it by -1
            // if we were growing before we are now shrinking and vice versa
            scaleChange = -1 * scaleChange;
        }
    }
}