Skalowanie
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 33 z 85.
transform.localScale skaluje obiekt wzdłuż każdej z jego osi. Domyślny sześcian ma 1 jednostkę długości z każdej strony, więc sześcian z localScale (4, 1, 0.5) ma 4 jednostki szerokości, 1 jednostkę wysokości i pół jednostki głębokości. Aby uzyskać jednakowy rozmiar we wszystkich kierunkach, pomnóż przez Vector3.one, czyli (1, 1, 1). Ta bańka mydlana rośnie o 0.3 jednostki na sekundę, aż osiągnie 3 jednostki szerokości:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}Mathf.Min(a, b) zwraca mniejszą z dwóch liczb, więc size rośnie, aż osiągnie 3, a potem pozostaje równe 3.
Skalowanie odbywa się względem punktu obrotu obiektu, który w przypadku wbudowanych kształtów Unity znajduje się w środku. Środek sześcianu o boku 1 jednostki, stojącego na ziemi, znajduje się na wysokości y = 0.5. Zwiększ jego wysokość do 3 jednostek, a będzie sięgać 1.5 jednostki w górę i 1.5 jednostki w dół od tego punktu, więc połowa sześcianu zatonie w ziemi. Aby stał na ziemi, jego środek musi znajdować się na połowie jego wysokości: y = 1.5.
Rozmiar obiektu potomnego jest mnożony przez rozmiar jego obiektu nadrzędnego: obiekt potomny z localScale (1, 1, 1), umieszczony pod obiektem nadrzędnym przeskalowanym dwukrotnie, jest rysowany w dwukrotnie większym rozmiarze. transform.lossyScale odczytuje ten końcowy rozmiar w świecie i jest tylko do odczytu; ustawiasz localScale.
Wyzwanie
ŚredniZmniejsz kostkę lodu do 0.4, utrzymując ją na ziemi.
- Dodaj pole
float size = 1f;. WUpdate()ustawsize = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Ustaw
transform.localScale = Vector3.one * size;. - Utrzymaj spód kostki na wysokości y = 0: ustaw współrzędną y pozycji na
size / 2, zachowując x i z.
Naciśnij „Graj”: kostka się kurczy i pozostaje na ziemi. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Zmniejszaj rozmiar o melt na sekundę, aż do 0.4, utrzymując spód na ziemi
}
}
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światłaPoćwicz samodzielnie: Edytor online Unity