Menu
CoddyTech

Escala

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 33 de 85.

transform.localScale multiplica o tamanho de um objeto ao longo de cada um de seus eixos. Um cubo padrão tem 1 unidade em cada lado, então um cubo com localScale (4, 1, 0.5) tem 4 unidades de largura, 1 de altura e meia unidade de profundidade. Para um tamanho uniforme, multiplique Vector3.one, que é (1, 1, 1). Esta bolha de sabão cresce 0.3 por segundo até ter 3 unidades de largura:

public float size = 1f;

void Update()
{
    size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
    transform.localScale = Vector3.one * size;
}

Mathf.Min(a, b) retorna o menor dos dois números, então size cresce até chegar a 3 e depois permanece em 3.

A escala é aplicada em torno do pivô do objeto, que, nas formas integradas do Unity, fica no centro. Um cubo de 1 unidade apoiado no chão tem seu centro em y = 0.5. Aumente sua escala para 3 unidades de altura e ele alcançará 1.5 para cima e 1.5 para baixo a partir dali, então metade dele afundará no chão. Para ficar apoiado no chão, seu centro precisa estar na metade da sua altura: y = 1.5.

O tamanho de um objeto filho é multiplicado pelo do objeto pai: um filho com localScale (1, 1, 1) sob um pai com escala 2 é desenhado com o dobro do tamanho. transform.lossyScale lê esse tamanho final no mundo e é somente leitura; localScale é o valor que você define.

challenge icon

Desafio

Médio

Derreta o cubo de gelo até 0.4, mantendo-o no chão.

  1. Adicione um campo float size = 1f;. Em Update(), defina size = Mathf.Max(size - melt * Time.deltaTime, 0.4f);.
  2. Defina transform.localScale = Vector3.one * size;.
  3. Mantenha a base em y = 0: defina o y da posição como size / 2, mantendo x e z.

Pressione “Jogar”: o cubo encolhe e permanece no chão. Depois, “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // Encolha na taxa de melt por segundo, até 0.4, mantendo a base no chão
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity