Unity – pierwszy skrypt

Łączenie edytora z kodem

Piotr Wandycz
Game Dev

Dzisiaj zajmiemy się utworzeniem pierwszego obiektu, ustawieniem mu grafiki (żeby go było widać), oraz napisaniem skryptu, który nim będzie obracał. Pozornie jest to mało tematów, ale poruszają chyba wszystkie fundamenty Unity. Większość rzeczy w grze to właśnie takie obiekty z popodpinanymi skryptami i innymi wbudowanymi komponentami (np. do animacji). To, czego się przez lata człowiek uczy to tak naprawdę tempo, w którym te obiekty tworzymy 🙂

Na początek będziemy potrzebować grafik. Podczas kursu utworzymy prostą platformówkę, korzystając z tych grafik. Pobierz je, wypakuj, utwórz nowy projekt 2D w Unity, przeciągnij folder PNG do zakładki Project, a po zaimportowaniu grafik zmień mu nazwę na Art/Sprites/GFX (cokolwiek uznasz za stosowne). Powinno to wyglądać podobnie jak na obrazku:

Teraz zajmiemy się przygotowaniem obrazka. Wejdz do folderu sprites > cherry i kliknij cherry-1. Zakładka inspektora rozpozna typ pliku (png) i dostosuje swoje okno dla edycji tekstury 2D. Trzeba tu zmienić trzy opcje – ilość pikseli na jedną jednostkę Unity (z 100 na 32) oraz filtrowanie i kompresję, aby grafika pikselowa się wyostrzyła. Ustaw je tak jak na załączonym obrazku i kliknij Apply:

Na Pixels Per Unit i kamerę poświęcę osobny wpis. Na dzisiaj wystarczy wiedzieć, że kamera domyślnie ma wysokość 10 jednostek (unit). Jeśli zmniejszymy ilość pikseli z 100 na 32, to obrazki staną się trzykrotnie większe. Przeciągnij teraz cherry-1 i upuść w Hierarchy. Zostanie utworzony nowy obiekt w grze – kliknij w niego. W momencie upuszczenia wydarzyło się kilka rzeczy. Środowisko utworzyło nowy obiekt i przypisało mu dwa podstawowe komponenty, czyli gameObject i transform. Dodatkowo sprawdziło, czy może dorzucić domyślny komponent dla naszego typu pliku. Dla obrazka 2D jest to Sprite Renderer, dzięki któremu obiekt będzie widoczny w grze.

Dodamy teraz skrypt obracający wisienką. Jeśli klikniesz Add Component i zaczniesz wpisywać nazwę komponentu, który nie istnieje – Unity domyśli się, że chcesz dodać skrypt. Wpisz zatem Rotate i daj dwukrotnie Enter.

Skrypt zostanie utworzony w folderze Assets oraz automatycznie przypisany do naszego obiektu.

Kliknijmy w niego dwukrotnie, aby otworzyć Visual Studio. Powita nas następujący kod:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotate : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Na początek wystarczy nam wiedza, że mamy do dyspozycji dwie metody – Start i Update. Pierwsza wywoła się na starcie, a druga w każdej klatce (frame). Ilość klatek zależy od posiadanej karty graficznej. Może to powodować problemy z naszymi obliczeniami, dlatego została utworzona metoda FixedUpdate, która domyślnie wywołuje się stabilne 50 razy na sekundę (50 FPS). Dzisiaj w zupełności wystarczy nam zwykły Update. Dopiszmy takie dwie linijki kodu:

void Update()
{
    var rotation = new Vector3(0, 0, 90) * Time.deltaTime;
    transform.Rotate(rotation);
}

Najpierw do zmiennej wpiszemy nową wartość cząstkowego obrotu. Warto zapamiętać, że w grze 2D poruszamy się w osi X i Y, a obracamy w osi Z. Dlatego wpisałem 90 w ostatnim polu Vector3. Żeby jednak uzyskać dokładnie jeden obrót o 90 stopni w ciągu 1 sekundy – musimy przemnożyć całość przez czas, który upłynął od ostatniej klatki. Przykładowo – wyciągając 200 FPS pojawi się tam 1/200, czyli 0,005. Po przemnożeniu przez 90 to 0,45, więc w rzeczywistości pętla wykona się 200 razy i obróci za każdym razem o 0,45. Nie trzeba tego ręcznie liczyć, warto po prostu pamiętać o ustawieniu interesującej nas wartości i mnożeniu przez upływ czasu. Możemy zapisać skrypt, wrócić do Unity i po wciśnięciu Play powinniśmy otrzymać taki efekt:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *