Podstawy programowania gier – pierwsze kroki z Unity i C# to temat, który zyskuje na popularności wśród zarówno początkujących, jak i doświadczonych programistów. Unity, jako jedno z najpotężniejszych narzędzi do tworzenia gier, w połączeniu z językiem programowania C#, oferuje szerokie możliwości dla twórców gier. W tym artykule przyjrzymy się, jak rozpocząć swoją przygodę z programowaniem gier, jakie są podstawowe elementy Unity oraz jak wykorzystać C# do tworzenia interaktywnych i angażujących gier.

Wprowadzenie do Unity

Unity to zaawansowane środowisko do tworzenia gier, które umożliwia tworzenie zarówno prostych, jak i zaawansowanych projektów. Jego intuicyjny interfejs oraz szeroka gama narzędzi sprawiają, że jest idealnym wyborem dla początkujących programistów. Unity obsługuje wiele platform, w tym PC, konsole, urządzenia mobilne oraz VR, co czyni go wszechstronnym narzędziem do tworzenia gier.

Instalacja i konfiguracja Unity

Aby rozpocząć pracę z Unity, należy najpierw pobrać i zainstalować Unity Hub, który jest centralnym miejscem zarządzania projektami i wersjami Unity. Po zainstalowaniu Unity Hub, można pobrać najnowszą wersję Unity Editor, który jest głównym narzędziem do tworzenia gier.

  • Pobierz i zainstaluj Unity Hub z oficjalnej strony Unity.
  • Uruchom Unity Hub i zaloguj się na swoje konto Unity.
  • Wybierz zakładkę „Installs” i kliknij „Add” aby pobrać najnowszą wersję Unity Editor.
  • Po zakończeniu instalacji, przejdź do zakładki „Projects” i kliknij „New” aby utworzyć nowy projekt.

Podstawowe elementy interfejsu Unity

Po uruchomieniu Unity Editor, zobaczysz główny interfejs, który składa się z kilku kluczowych elementów:

  • Scene View: Główne okno, w którym można tworzyć i edytować sceny gry.
  • Game View: Okno, które pokazuje, jak gra będzie wyglądać podczas uruchomienia.
  • Hierarchy: Lista wszystkich obiektów w bieżącej scenie.
  • Inspector: Panel, który pokazuje właściwości wybranego obiektu.
  • Project: Okno, które zawiera wszystkie zasoby projektu, takie jak modele, tekstury i skrypty.
  • Console: Panel, który wyświetla komunikaty debugowania i błędy.

Podstawy programowania w C#

C# jest językiem programowania, który jest szeroko stosowany w Unity do tworzenia logiki gry. Jest to język obiektowy, co oznacza, że kod jest organizowany w klasy i obiekty. W tej części artykułu omówimy podstawowe elementy C#, które są niezbędne do rozpoczęcia programowania w Unity.

Podstawowe składniki C#

Podstawowe składniki C# obejmują zmienne, typy danych, operatory, instrukcje warunkowe i pętle. Oto krótkie wprowadzenie do każdego z tych elementów:

  • Zmienne: Zmienne są używane do przechowywania danych. W C# zmienne muszą być zadeklarowane z określonym typem danych, takim jak int (liczby całkowite), float (liczby zmiennoprzecinkowe) czy string (ciągi znaków).
  • Typy danych: Typy danych określają rodzaj danych, które mogą być przechowywane w zmiennej. C# obsługuje wiele typów danych, w tym liczby całkowite, liczby zmiennoprzecinkowe, znaki i ciągi znaków.
  • Operatory: Operatory są używane do wykonywania operacji na zmiennych. C# obsługuje operatory arytmetyczne (np. +, -, *, /), logiczne (np. &&, ||) i porównania (np. ==, !=, <, >).
  • Instrukcje warunkowe: Instrukcje warunkowe, takie jak if i else, są używane do wykonywania kodu w zależności od spełnienia określonych warunków.
  • Pętle: Pętle, takie jak for i while, są używane do wykonywania kodu wielokrotnie, dopóki określony warunek jest spełniony.

Tworzenie pierwszego skryptu w Unity

Aby utworzyć pierwszy skrypt w Unity, należy wykonać następujące kroki:

  • W oknie Project kliknij prawym przyciskiem myszy i wybierz Create > C# Script.
  • Nadaj skryptowi nazwę, na przykład PlayerController.
  • Dwukrotnie kliknij skrypt, aby otworzyć go w edytorze kodu, takim jak Visual Studio.

Po otwarciu skryptu zobaczysz domyślną strukturę klasy C#. Oto przykład prostego skryptu, który porusza obiekt w górę, gdy naciśnięty zostanie klawisz strzałki w górę:

using UnityEngine;public class PlayerController : MonoBehaviour{ public float speed = 5.0f; void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(Vector3.up * speed * Time.deltaTime); } }}

W powyższym skrypcie:

  • using UnityEngine; – Importuje przestrzeń nazw Unity, która zawiera klasy i funkcje potrzebne do tworzenia gier.
  • public class PlayerController : MonoBehaviour – Definiuje klasę PlayerController, która dziedziczy po klasie MonoBehaviour. MonoBehaviour jest bazową klasą dla wszystkich skryptów w Unity.
  • public float speed = 5.0f; – Deklaruje publiczną zmienną speed, która określa prędkość ruchu obiektu.
  • void Update() – Metoda Update jest wywoływana raz na klatkę. Wewnątrz tej metody sprawdzamy, czy klawisz strzałki w górę jest naciśnięty, a jeśli tak, poruszamy obiekt w górę.
  • transform.Translate(Vector3.up * speed * Time.deltaTime); – Przesuwa obiekt w górę z określoną prędkością. Time.deltaTime jest używane do zapewnienia, że ruch jest niezależny od liczby klatek na sekundę.

Tworzenie pierwszej gry w Unity

Teraz, gdy mamy podstawową wiedzę na temat Unity i C#, możemy przejść do tworzenia naszej pierwszej gry. W tej części artykułu stworzymy prostą grę, w której gracz będzie sterował postacią, zbierał monety i unikał przeszkód.

Przygotowanie sceny

Na początek musimy przygotować scenę gry. W tym celu wykonaj następujące kroki:

  • Utwórz nową scenę, wybierając File > New Scene.
  • Dodaj płaszczyznę, która będzie służyć jako podłoże, wybierając GameObject > 3D Object > Plane.
  • Dodaj postać gracza, wybierając GameObject > 3D Object > Capsule. Przeskaluj kapsułę, aby przypominała postać.
  • Dodaj kilka obiektów, które będą służyć jako monety i przeszkody, wybierając GameObject > 3D Object > Cube i GameObject > 3D Object > Sphere.

Dodawanie logiki gry

Teraz, gdy mamy przygotowaną scenę, możemy dodać logikę gry za pomocą skryptów C#. Utworzymy skrypty do sterowania postacią gracza, zbierania monet i unikania przeszkód.

Sterowanie postacią gracza

Utwórz nowy skrypt o nazwie PlayerController i dodaj do niego następujący kod:

using UnityEngine;public class PlayerController : MonoBehaviour{ public float speed = 5.0f; void Update() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); transform.Translate(movement * speed * Time.deltaTime); }}

W powyższym skrypcie:

  • float moveHorizontal = Input.GetAxis(„Horizontal”); – Pobiera wartość osi poziomej (strzałki w lewo/prawo lub klawisze A/D).
  • float moveVertical = Input.GetAxis(„Vertical”); – Pobiera wartość osi pionowej (strzałki w górę/dół lub klawisze W/S).
  • Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); – Tworzy wektor ruchu na podstawie wartości osi.
  • transform.Translate(movement * speed * Time.deltaTime); – Przesuwa postać gracza zgodnie z wektorem ruchu.

Zbieranie monet

Utwórz nowy skrypt o nazwie Coin i dodaj do niego następujący kod:

using UnityEngine;public class Coin : MonoBehaviour{ void OnTriggerEnter(Collider other) { if (other.CompareTag("Player")) { Destroy(gameObject); } }}

W powyższym skrypcie:

  • void OnTriggerEnter(Collider other); – Metoda wywoływana, gdy inny obiekt wejdzie w kolizję z obiektem monety.
  • if (other.CompareTag(„Player”)); – Sprawdza, czy obiekt, który wszedł w kolizję, ma tag „Player”.
  • Destroy(gameObject); – Niszczy obiekt monety, gdy zostanie zebrany przez gracza.

Upewnij się, że obiekty monet mają przypisany tag „Player”. Można to zrobić, wybierając obiekt gracza w hierarchii, a następnie w panelu Inspector wybierając Tag > Player.

Unikanie przeszkód

Utwórz nowy skrypt o nazwie Obstacle i dodaj do niego następujący kod:

using UnityEngine;public class Obstacle : MonoBehaviour{ void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Player")) { // Logika gry po zderzeniu z przeszkodą Debug.Log("Game Over"); } }}

W powyższym skrypcie:

  • void OnCollisionEnter(Collision collision); – Metoda wywoływana, gdy inny obiekt wejdzie w kolizję z przeszkodą.
  • if (collision.gameObject.CompareTag(„Player”)); – Sprawdza, czy obiekt, który wszedł w kolizję, ma tag „Player”.
  • Debug.Log(„Game Over”); – Wyświetla komunikat „Game Over” w konsoli debugowania.

Podsumowanie

Tworzenie gier w Unity z wykorzystaniem C# to fascynująca i satysfakcjonująca przygoda. Dzięki intuicyjnemu interfejsowi Unity oraz potężnym możliwościom języka C#, nawet początkujący programiści mogą szybko zacząć tworzyć własne gry. W tym artykule omówiliśmy podstawy Unity, podstawowe elementy programowania w C# oraz stworzyliśmy prostą grę, która może być punktem wyjścia do bardziej zaawansowanych projektów. Zachęcamy do dalszego eksplorowania możliwości Unity i C#, aby rozwijać swoje umiejętności i tworzyć coraz bardziej zaawansowane i angażujące gry.