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.
Desafio
MédioDerreta o cubo de gelo até 0.4, mantendo-o no chão.
- Adicione um campo
float size = 1f;. EmUpdate(), definasize = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Defina
transform.localScale = Vector3.one * size;. - 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
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity