Implementacja wykrywania trafień dla każdego typu MapChip
Środowisko weryfikacji
- Windows
-
- Okna 11
- Edytor Unity
-
- 2021.3.3f1
- Pakiet systemu wejściowego
-
- 1.3.0
Wymagania wstępne dotyczące tej porady
Poniższe ustawienia zostały wcześniej wprowadzone jako przesłanka do opisu tej wskazówki.
Jakie są wymagania wstępne dotyczące tej porady?
- Tworzenie mapy 2-W z góry na dół przy użyciu standardowych map kafelków Unity
- Obsługa kolizji ze standardową fizyką (2D)
- Implementowanie wykrywania trafień za pomocą map kafelków
Informacje o wypożyczaniu materiałów map
Przetwarzamy pożyczone z następujących stron.
Na początku
Tym razem żetony MapChips są umieszczane w jednym TileMap i decyduje się, czy wykonać określenie trafienia zgodnie z typem umieszczonej MapTip.
Ponieważ ta wskazówka jest w dużej mierze taka sama jak inna wskazówka "Zaimplementuj wykrywanie trafień za pomocą map kafelków", Szczegółowe wyjaśnienie można znaleźć tam. Tutaj tylko procedura jest wyjaśniona dla tej samej treści i tylko różnice są dodawane.
Implementacja chodzących postaci
Najpierw przygotuj obraz duszka, który gracz będzie kontrolował, aby wykonać operację wykrywania trafień i dodać go do swojego projektu. Tym razem rozmiar maptipa wynosi 32 piksele, więc zrobię obraz tego samego rozmiaru.
Tym razem pominę animację chodzenia, ponieważ procedura będzie długa, jeśli zostanie wdrożona. Jeśli chcesz go wdrożyć, zapoznaj się z poniższymi wskazówkami.
Wybierz obraz dodany do projektu. Ponieważ chcemy dopasować jednostkę do układu mapy, ustaw "Liczba pikseli na jednostkę" na "32".
Po skonfigurowaniu kliknij przycisk "Zastosuj" poniżej.
Po ustawieniu obrazu upuść go w widoku i dodaj obiekt.
Ustaw proces ruchu postaci. Dodaj skrypt i pozostaw go o nazwie Player
.
Skrypt wygląda tak: Jest to prosty proces ruchu, który porusza duszkiem za pomocą klawiatury.
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
// 一定時間ごとに呼ばれます
void FixedUpdate()
{
// キーボードの情報を取得
var keyboard = Keyboard.current;
// スプライトの移動処理
if (keyboard.leftArrowKey.isPressed)
{
transform.Translate(-0.1f, 0, 0, Space.World);
}
if (keyboard.rightArrowKey.isPressed)
{
transform.Translate(0.1f, 0, 0, Space.World);
}
if (keyboard.upArrowKey.isPressed)
{
transform.Translate(0, 0.1f, 0, Space.World);
}
if (keyboard.downArrowKey.isPressed)
{
transform.Translate(0, -0.1f, 0, Space.World);
}
}
}
Utworzony skrypt zostanie dołączony do obiektu znakowego.
Uruchom grę i sprawdź, czy postać porusza się za pomocą klawiatury.
Przygotowywanie porad MapTips
Przygotuj obraz etykietki mapy i dodaj go do projektu. Wraz ze wzrostem liczby żetonów mapy, ustawienie staje się kłopotliwe, więc tym razem przygotowaliśmy tylko dwa pola, jeden, który można przejść i drugi, który nie może chodzić.
Wybierz obrazy dodane do projektu i skonfiguruj ustawienia MapChips. Aby uzyskać więcej informacji, zapoznaj się z poniższymi poradami:
Po skonfigurowaniu kliknij przycisk Zastosuj, a następnie przycisk Sprite Editor.
Podziel przez 32 piksele.
Wybierz kartę Paleta kafelków, aby utworzyć paletę. Jeśli nie ma zakładek, możesz je wyświetlić z menu z "Okno > 2D -> Tile Palette". Nazwa palety może być dowolna, ale tutaj jest to "MapChipPalette".
Ponieważ zapiszemy go w folderze, utwórz nowy folder "MapChipPalette" w folderze Scene i określ go.
Do projektu dodano folder MapChipPalette.
Następnie dodasz etykietki MapTips do palety. Przeciągnij i upuść podzielony obraz etykietki mapy na paletę.
Do palety dodano poradki MapTip.
Tworzenie mapy
Pozostaw ustawienia wykrywania trafień na boku i najpierw utwórz mapę. Wykrywanie trafień możesz skonfigurować później. Najpierw dodaj mapę kafelków do hierarchii.
Po dodaniu wybierz Tilemap. W widoku zostanie wyświetlona siatka.
Najpierw ustaw mapchip, który nie staje się ścianą w widoku.
Na razie położyłem go wszędzie.
Następnie umieść kamienną mapę, która będzie służyć jako ściana.
Tym razem nie było problemu, ale jeśli twoja postać ma być za mapą, ustaw kolejność warstw na liczbę większą niż mapa kafelków.
Oczywiście, nawet jeśli przesuniesz grę w tym momencie, prześlizgniesz się przez ścianę i przejdziesz.
Ustawienia wykrywania trafień MapChip
W tym miejscu ustalimy, czy dla każdego rodzaju układu mapy ma być wprowadzany osąd. Najpierw otwórz folder "MapChipPalette" utworzony podczas tworzenia palety.
W palecie znajduje się maptip, więc najpierw wybierz wskazówkę, po której możesz chodzić.
W oknie Inspektor ustaw wartość Typ zderzacza na Brak. Później dodasz ustawienie wykrywania kolizji do Tilemap, ale ustawienie go na "Brak" zapobiegnie kolizji tego układu map.
Druga kamienna maptip jest ustawiona na "Grid". Ponieważ tym razem nie jest to przezroczysta maptip, nie ma problemu z "sprite", ale jeśli ustawisz ją na "sprite", nie zostanie oceniona przez uderzenie w przezroczystą część obrazu.
To wszystko, co jest do MapTip. To proste, ponieważ tym razem są tylko dwa, ale jeśli masz dużą liczbę żetonów map, musisz ustawić tyle.
Ustawienia wykrywania kolizji
Stąd jest prawie taka sama jak zawartość "Implementuj wykrywanie trafień za pomocą mapy kafelków".
Najpierw wprowadź niezbędne ustawienia wykrywania kolizji znaków. Dodaj "Physics 2D -> Circle Collider 2D" jako komponent. Tym razem duszek jest okrągły, więc zrobiłem z niego okrąg, ale proszę wybrać Box lub Capsule w zależności od kształtu.
Dodamy również "Fizyka 2D -> Sztywne ciało 2D".
Ustaw skalę grawitacji na 0, aby zapobiec spadkowi grawitacji. Sprawdź również Z dla "Fix rotation", aby zapobiec obracaniu się duszka.
W polu Mapa kafelków dodaj komponent Tilemap -> Tilemap Collider 2D.
Widać, że wokół kamiennej mapy w widoku dodano zieloną linię. Oznacza to, że wykrywanie trafień jest ustawione tylko dla kamieni. Widać, że ustawienie typu zderzacza w maptipie na powyższej palecie jest odzwierciedlone.
Spróbuj uruchomić grę i podejść do ściany. Myślę, że możesz upewnić się, że postać zatrzymuje się przed ścianą w odpowiedni sposób. Widać, że można go łatwo zaimplementować bez pisania żadnych programów związanych z wykrywaniem trafień.
Łączenie wykrywania trafień MapChip
Jak wspomniano w poniższych wskazówkach, kiedy faktycznie go przesuwasz, zachowanie wykrywania uderzeń w ścianę jest trochę dziwne. Przyczynę i obejście opisano w poniższych poradach.
Jednak łącząc część chipa mapy wykrywającą trafienia, dziwne zachowanie zostanie skorygowane, a obciążenie przetwarzania zostanie zmniejszone w tym samym czasie, więc zróbmy to co najmniej.
Najpierw zaznacz "Użyj w kompozycji" w Tilemap Collider 2D.
W obszarze Dodaj komponent wybierz opcję Fizyka 2D -> Zderzacz kompozytów 2D.
Zostanie również dodany "Rigidbody 2D", więc zmień "Typ ciała" na "Statyczny".
Wtedy myślę, że możesz potwierdzić, że ocena trafienia kamienia nie dotyczy każdego chipa mapy i jest połączona.
Teraz uruchom grę i upewnij się, że działa poprawnie.