É possível usar algum código para fazer o objeto do script aumentar sua escala constantemente? Vi que é possível utilizar "transform.Translate" e "transform.Rotate", porém não conseguir utilizar para variar a escala.
É possível usar algum código para fazer o objeto do script aumentar sua escala constantemente? Vi que é possível utilizar "transform.Translate" e "transform.Rotate", porém não conseguir utilizar para variar a escala.
Oi, Bruno, tudo bem?
Você pode usar o transform.localScale
que é o valor que você vê no Inspector. Como você deve imaginar ela recebe um Vector3 então você pode variar o Vector3 como quiser.
index = 0;
void Update ()
{
index++;
transform.localScale = new Vector3(index, index, index);
}
Se você quiser dar uma olhada o Vector3 tem uma função chamada MoveTowards onde você pode passar um começo, um fim e de quanto em quanto quer andar de um pra outro.
Vector3 tamanhoDesejado = new Vector3(5, 5, 5);
void Update()
{
float velocidade = 5 * Time.deltaTime;
transform.localScale = Vector3.MoveTowards(transform.localScale, tamanhoDesejado, velocidade);
}
Olá Henrique, beleza?
Interessante o código que você passou!
Tem como fazer o objeto crescer até a escala desejada e, após fazer o objeto diminuir até o tamanho normal?
Consegui fazer isto inserindo a opção "if" com acionamento de controle de entrada "input.getkey". Porém não foi possível fazer isto de forma automática (sem acionamento de teclado).
Tipo ficar indo e voltando o tempo todo ou só uma vez?
Dá pra fazer uma condição que muda o valor do tamanho desejado, agora se você quer o tempo todo eu recomendaria fazer algo calcular um valor que vai mudando de acordo como uma senoide e colocar esse valor no tamanho desejado.
Posso te ajudar se você tiver dúvida :)
Tem como você passar os dois códigos?
1° com o objeto crescendo e diminuindo só uma vez. E,
2° com o objeto indo e voltando o tempo todo.
Agradeço muito se você puder descrever o mencionado na sua resposta sobre calculo e senoide.
Valeu! Bruno
Oi, Bruno,
a formula da senoide seria algo como:
float senoide = tamanho * Mathf.Sin( ( Time.time * velocidade ) + frequencia );
Claro que você tem que declarar as variáveis tamanho
que é o tamanho da curva, até onde ela vai; velocidade
, que é quão rápido ela vai; e frequencia
que é parecido com a velocidade mas vai indicar quantas ocorrências terá num intervalo finito de tempo.
Claro que se você colocar só o Mathf.sin(Time.time)
será só uma curva que anda de -1 até 1 então teria que alterar o tamanho, e o resto não seria necessário, por exemplo.
Aí o de ir e voltar uma vez vou deixar pra você brincar com um Booleano por aí, lembrando que a Unity também tem a função PingPong que poderia ser usada pra isso (o exemplo da documentação já te ajuda) porque é um valor que vai e volta também. Também podemos usar o Vector.Lerp e mudar o t
da função de 0 até 1 o tempo todo.
Lembrando que você não precisa fazer isso via código você pode selecionar o objetor e abrir o painel de Animation e fazer uma animação da escala do objeto e mandar ela se repetir, isso é muito mais fácil e poupa o trabalho.