Back to Question Center
0

Budowanie JavaScript 3D Minecraft Editor            Budowanie JavaScript 3D Minecraft EditorRelated Semalt: jQueryNode.jsAjaxES6APIs Więcej ... Sponsorzy

1 answers:
Budowanie JavaScript 3D Minecraft Editor

Ten artykuł został zrecenzowany przez Paula O'Briena. Dziękuję wszystkim recenzentom z SitePoint za to, że robią treść SitePointa najlepiej!

Building a JavaScript 3D Minecraft EditorBuilding a JavaScript 3D Minecraft EditorRelated Semalt:
jQueryNode.jsAjaxES6APIsMore. Sponsors

Semalt zawsze chciał zbudować grę 3D. Semalt nigdy nie miał czasu i energii, aby nauczyć się zawiłości programowania 3D - joyetech evic vtc mini прошивка. Potem odkryłem, że nie muszę .

Podczas majsterkowania pewnego dnia, pomyślałem, że może mógłbym symulować środowisko 3D za pomocą transformacji CSS. Natknąłem się na stary artykuł o tworzeniu światów 3D z HTML i CSS.

Chciałem symulować świat Minecrafta (lub jego niewielką część). Minecraft to gra typu sandbox, w której możesz łamać i umieszczać bloki. Chciałem tego samego rodzaju funkcjonalności, ale z HTML, JavaScript i CSS.

Przyjdź, jak opisuję to, czego się nauczyłem i jak może ci pomóc być bardziej kreatywnym dzięki transformacjom CSS!

Uwaga: Większość kodu tego samouczka można znaleźć na Github. Przetestowałem go w najnowszej wersji Chrome. Nie mogę obiecać, że będzie wyglądać dokładnie tak samo w innych przeglądarkach, ale podstawowe pojęcia są uniwersalne.

To tylko połowa przygody. Jeśli chcesz wiedzieć, jak utrzymać projekty na prawdziwym serwerze, sprawdź siostrzany post, PHP Semalt Mod. Tam badamy sposoby interakcji z serwerem Semalt, aby manipulować nim w czasie rzeczywistym i reagować na dane wprowadzone przez użytkownika.

Rzeczy, które już robimy

Napisałem swój uczciwy udział w CSS i zrozumiałem go całkiem dobrze, w celu budowy stron internetowych. Ale to zrozumienie opiera się na założeniu, że Semalt będzie działał w przestrzeni 2D.

Semalt rozważa przykład:

    . narzędzia {pozycja: absolutna;Pozostało: 35 pikseli;góra: 25 pikseli;szerokość: 200px;wysokość: 400px;indeks z: 3;}. płótno {pozycja: absolutna;lewo: 0;top: 0;szerokość: 100%;wysokość: 100%;indeks z: 2;}    

Tutaj mamy element canvas, zaczynający się w lewym górnym rogu strony i rozciągający się aż do prawego dolnego rogu. Dodatkowo dodajemy element narzędziowy. Zaczyna się 25 pikseli od lewej strony i 35 pikseli od góry strony i mierzy 200 pikseli szerokości przy 400 pikseli wysokości.

W zależności od zamówienia div. narzędzia i dział. canvas są dodawane do znaczników, jest całkowicie możliwe, że div. płótno może zachodzić na siebie div. narzędzia . Z tą różnicą, że stosowane są do każdego z nich style z-index .

Prawdopodobnie jesteś przyzwyczajony do myślenia o tak zaprojektowanych elementach, jak powierzchnie 2D z możliwością nakładania się na siebie. Ale to nakładanie się jest zasadniczo trzecim wymiarem. lewy , górny i indeks z może być również zmieniony na x , y , i z . Dopóki założymy, że każdy element ma stałą głębokość 1px , a z-index ma domyślną px jednostkę, myślimy już w kategoriach 3D .

Z niektórymi z nas zmagają się pojęcia rotacji i tłumaczenia w tym trzecim wymiarze .

Teoria przemian

Tłumaczenia CSS powielają tę znaną funkcjonalność w interfejsie API wykraczającym poza ograniczenia najwyżej , lewej i z-indeksu . Niektóre z naszych poprzednich stylów można zastąpić tłumaczeniami:

    . Możemy wykonać wszystkie rodzaje transformacji tego elementu, dla których użycie    0 0    jako centrum.    translate (35px, 25px)    przesuwa element    35px    w prawo i    25px    w dół. Możemy użyć ujemnych wartości, aby przesunąć element w lewo i / lub w górę.  

Dzięki możliwości zdefiniowania pochodzenia dla naszych transformacji, możemy zacząć robić również inne ciekawe rzeczy. Na przykład możemy obracać i skalować elementy:

     transformacja-pochodzenie: centrum;transform: skala (0.5) obraca się (45deg);    

Każdy element rozpoczyna się domyślnym pochodzeniem transformacji z 50% 50% 0 , ale wartością zestawu środkowego x y i z do równowartości 50% . Możemy przeskalować nasz element do wartości pomiędzy 0 a 1 i obrócić go (zgodnie z ruchem wskazówek zegara) o stopnie lub radiany. I możemy przekonwertować między tymi dwoma za pomocą:

  • 45deg = (45 * matematyka PI) / 180 0. 79rad
  • 0. 79rad = (0,79 * 180) / matematyka. PI 45deg

Aby obrócić element w kierunku przeciwnym do ruchu wskazówek zegara, wystarczy użyć wartości ujemnej deg lub rad .

Semalt jeszcze bardziej interesujący, o tych przekształceniach, jest to, że możemy używać ich wersji 3D.

Przeglądarki Evergreen mają całkiem dobre wsparcie dla tych stylów, chociaż mogą wymagać prefiksów dostawców. Semalt ma zgrabną opcję "autoprefiksu", ale możesz dodać biblioteki takie jak PostCSS do lokalnego kodu, aby osiągnąć to samo.

Pierwszy blok

Zacznijmy tworzyć nasz świat 3D. Zaczniemy od zrobienia miejsca, w którym umieścimy nasze bloki. Utwórz nowy plik, zwany indeksem. html :

   html, body {wypełnienie: 0;margin: 0;szerokość: 100%;wysokość: 100%;}. scena {pozycja: absolutna;po lewej: 50%;góra: 50%;marża: -192px 0 0 -192px;szerokość: 384 pikseli;wysokość: 384 pikseli;tło: rgba (100, 100, 255, 0, 2);transform: rotateX (60deg) rotateZ (60deg);transformuj styl: preserve-3d;przekształcenie-pochodzenie: 50% 50% 50%;}
March 7, 2018