Escala
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 33 de 85.
transform.localScale multiplica el tamaño de un objeto a lo largo de cada uno de sus ejes. Un cubo predeterminado mide 1 unidad por cada lado, así que un cubo con localScale (4, 1, 0.5) mide 4 unidades de ancho, 1 de alto y media unidad de profundidad. Para un tamaño uniforme, multiplica Vector3.one, que es (1, 1, 1). Esta burbuja de jabón crece 0.3 por segundo hasta medir 3 unidades de ancho:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}Mathf.Min(a, b) devuelve el menor de sus dos números, así que size crece hasta llegar a 3 y después se queda en 3.
La escala se aplica alrededor del pivote del objeto, que en las formas integradas de Unity está en el centro. Un cubo de 1 unidad apoyado en el suelo tiene el centro en y = 0.5. Al escalarlo hasta que mida 3 unidades de alto, llega hasta 1.5 por encima y 1.5 por debajo de ese punto, así que la mitad se hunde en el suelo. Para apoyarse en el suelo, su centro debe estar a la mitad de su altura: y = 1.5.
El tamaño de un hijo se multiplica por el de su padre: un hijo con localScale (1, 1, 1) bajo un padre escalado por 2 se dibuja el doble de grande. transform.lossyScale lee ese tamaño final en el mundo y es de solo lectura; localScale es el que estableces.
Desafío
IntermedioReduce el cubo de hielo hasta 0.4, manteniéndolo en el suelo.
- Añade un campo
float size = 1f;. EnUpdate(), establecesize = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Establece
transform.localScale = Vector3.one * size;. - Mantén la parte inferior en y = 0: establece la coordenada y de la posición en
size / 2, manteniendo x y z.
Pulsa «Jugar»: el cubo se encoge y permanece en el suelo. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Encoge melt por segundo hasta llegar a 0.4, manteniendo la parte inferior sobre el suelo
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity