Strona e-learningowa jest zgodna ze standardami WCAG 2.1 na poziomie AA, zapewniając dostępność dla wszystkich użytkowników.

MODUŁ III — TWORZENIE MAPY I ŚRODOWISKA GRY

Trzeci moduł szkolenia poświęcony jest budowie środowiska gry 2D oraz tworzeniu kompletnej mapy poziomu w silniku Unity. Uczestnicy uczą się projektować świat gry w oparciu o system TileMap.

W trakcie zajęć omawiane jest tworzenie siatki Grid, budowanie mapy z kafelków oraz korzystanie z Tile Palette. Uczestnicy poznają zasady snapowania obiektów, eliminowania prześwitów pomiędzy kafelkami oraz optymalnego układania elementów środowiska gry.

Moduł obejmuje również konfigurację Pixel Perfect, tworzenie prefabów (pojedynczych i wieloelementowych), organizację środowiska gry oraz pracę z warstwami tła i pierwszego planu. Uczestnicy poznają także efekt paralaksy jako sposób budowania głębi w grach 2D.

Moduł III Unity 2D - TileMap i środowisko gry

🟢 1. NOWY PROJEKT

🎮 W tej lekcji uczestnicy nauczą się budować profesjonalne mapy do gry 2D z wykorzystaniem systemu TileMap w silniku Unity.




🟢 1. NOWY PROJEKT

  • Unity Hub → New Project
  • Wybierz: 2D Core
  • Create

🟢 2. SCENA

  • File → New Scene → 2D Core
  • CTRL + S → Main

🟢 3. IMPORT GRAFIK

  • gracz.png
  • ziemia.png
  • przeszkoda.png

🟢 4. USTAWIENIA SPRITE

Każdy PNG:

Texture Type = Sprite (2D and UI)
Sprite Mode = Single
Pixels Per Unit = 100
Mesh Type = Full Rect

Kliknij: Apply


🟢 5. ZIEMIA

  • Position: 0, -3, 0
  • Scale: 10, 1, 1
  • Dodaj: BoxCollider2D

🟢 6. PRZESZKODA

  • Position: 3, -2, 0
  • Dodaj: BoxCollider2D

🟢 7. GRACZ

  • Position: 0, 0, 0
  • Dodaj: Rigidbody2D
  • Dodaj: BoxCollider2D

Ustaw Rigidbody2D:

Gravity Scale = 2
Freeze Rotation Z = ON

🟢 8. SKRYPT RUCHU

Assets → Create → C# Script → PlayerMove

using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    public float speed = 5f;
    public float jumpForce = 7f;

    Rigidbody2D rb;
    bool isGrounded;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");

        rb.velocity = new Vector2(x * speed, rb.velocity.y);

        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
            isGrounded = false;
        }
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        isGrounded = true;
    }
}

🟢 9. PODŁĄCZENIE SKRYPTU

  • Przeciągnij PlayerMove → Player

🟢 10. FINALNE KONTROLE

Ground: BoxCollider2D

Player: Rigidbody2D + BoxCollider2D

Obstacle: BoxCollider2D


🟢 11. TEST

  • Play
  • Sprawdź ruch
  • Sprawdź skok
  • Sprawdź kolizję z przeszkodą

🎮 Efekt końcowy: gracz porusza się, skacze i poprawnie przeskakuje przeszkody.


🎮 Szczegółowa lekcja: Zbieranie punktów i monet w Unity 2D

W tej lekcji uczestnicy stworzą jedną z najważniejszych mechanik gier 2D: zbieranie monet i naliczanie punktów.

🎮 Efekt końcowy:

🔥 To jest już prawdziwa mechanika gry wykorzystywana w platformówkach, grach przygodowych oraz grach mobilnych.


🟢 KROK 1 — Dodanie monety do sceny

📌 Najpierw dodamy grafikę monety do poziomu gry.

moneta.png

Następnie zmień nazwę obiektu na:

Coin

📌 Obiekt pojawi się w oknie: Hierarchy.


🟢 KROK 2 — Ustawienie pozycji monety

📌 Ustaw monetę w wybranym miejscu mapy.

Przykładowe ustawienia:

X = 3
Y = -1
Z = 0

📌 Pozycję ustawiamy w komponencie: Transform.


🟢 KROK 3 — Dodanie kolizji

📌 Aby Unity wykrywało dotknięcie monety, musimy dodać collider.

Add Component

Dodaj komponent:

Circle Collider 2D

📌 Collider tworzy niewidzialny obszar wykrywania dotyku.


🟢 KROK 4 — Ustawienie Trigger

📌 Moneta nie może blokować gracza. Ma jedynie wykrywać kontakt.

W komponencie: Circle Collider 2D zaznacz:

Is Trigger

🔥 To bardzo ważny krok. Bez Trigger mechanika zbierania monet nie będzie działać poprawnie.


🟢 KROK 5 — Dodanie tagu Coin

📌 Tag pozwala skryptowi rozpoznać, że dotknięty obiekt jest monetą.

Add Tag

Dodaj nowy tag:

Coin

Następnie wróć do obiektu: Coin i ustaw dla niego tag:

Coin

🟢 KROK 6 — Otworzenie skryptu gracza

📌 Teraz dodamy system punktów do bohatera.

Otwórz skrypt:

PlayerMove.cs

Najczęściej otwieramy go podwójnym kliknięciem w Unity.


🟢 KROK 7 — Dodanie zmiennej punktów

📌 Musimy stworzyć zmienną przechowującą liczbę punktów.

Pod linią:

Animator anim;

dodaj:

int score = 0;

📌 Zmienna score będzie przechowywać liczbę zebranych monet.


🟢 KROK 8 — Dodanie zbierania monet

📌 Na samym dole skryptu dodamy wykrywanie dotknięcia monety.

Dodaj kod:

using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    public float speed = 5f;
    public float jumpForce = 7f;

    Rigidbody2D rb;
    Animator anim;

    bool isGrounded;

    int score = 0;

    void Start()
    {
        rb = GetComponent();
        anim = GetComponent();
    }

    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");

        // RUCH
        rb.linearVelocity = new Vector2(x * speed, rb.linearVelocity.y);

        // ANIMACJA
        anim.SetFloat("Speed", Mathf.Abs(x));

        // OBRACANIE GRACZA
        if (x > 0)
        {
            transform.localScale = new Vector3(-0.3f, 0.3f, 1f);
        }
        else if (x < 0)
        {
            transform.localScale = new Vector3(0.3f, 0.3f, 1f);
        }

        // SKOK
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

            isGrounded = false;
        }
    }

    // DOTKNIĘCIE ZIEMI
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }

    // ZBIERANIE MONET
    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Coin"))
        {
            score++;

            Debug.Log("Punkty: " + score);

            Destroy(collision.gameObject);
        }
    }
}

📌 Co robi ten kod?


🟢 KROK 9 — Zapisanie skryptu

📌 Zapisz zmiany w Visual Studio lub VS Code.

Użyj skrótu:

CTRL + S

Następnie wróć do Unity.


🟢 KROK 10 — Test działania

📌 Uruchom grę.

▶ Play

🎮 Efekt działania:


🟢 Typowe błędy początkujących


🟢 Ćwiczenie praktyczne


🚀 Po ukończeniu tej lekcji uczestnicy będą potrafili tworzyć system zbierania monet, obsługiwać kolizje Trigger oraz budować podstawową mechanikę punktów w grach 2D.