Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

3. diel - Programovanie v Minecraftu - Pozíciovanie - časť I.

V minulej lekcii kurzu o programovaní v Minecraftu sme sa venovali selektorovým argumentom. Dnes pokročíme ďalej a ukážeme si spôsob pozicovanie entít (systém súradníc) - príkazy / tp a / teleport as tým súvisiace selektorové argumenty (v 2. časti). Začneme teoreticky, potom sa pozrieme na veľa využiteľných príkladov.

Systém súradníc

Začneme stlačením klávesu F3 (ak ste si v nastavení klávesy zmenili, bude to samozrejme iná klávesa - ja osobne by som vám ale nedoporučoval meniť priradenie F-kláves, akurát si komplikujete život). Kláves otvorí tzv. Debug screen (debugovacie obrazovku - programátori debugging iste dôverne poznajú ;) ). Na nej sa zobrazuje veľa zaujímavých informácií, ako je biom či informácie o entitách. Vás teraz bude zaujímať ľavý stĺpec, položky "XYZ:" (1) a "Facing:" (2).

Ukážka debug screen s pozíciami a Osni krížom v Minecraftu. - Programovanie v Minecraftu

Pozície v priestore

Zamerajme sa na XYZ :. Táto položka obsahuje vaše súčasné súradnice (hráč je vysoký 2 bloky (resp. 1,8 bloku), za miesto, kde sa hráč nachádza, sa považuje blok, v ktorom sú nohy, čiže ten spodný). Tieto súradnice sú určené tromi osami - X, Y a Z, pretože sa jedná o 3D priestor. Keď máte debug screen otvorenú, miesto kurzora vidíte osový kríž (3).

V priestore sa môžete nachádzať prakticky kde chcete, avšak ani minecraftový svet nie je nekonečný. Výškový stavebné limit je 256 blokov, na osiach x a je to 60 000 000 blokov. Stavať teda môžete medzi súradnicami -30000000 0 -30000000 až 30000000 256 30000000. Na úrovni (os y) 0 sa nachádza spodná Bedrock, nad 256 sa môžete pohybovať, ale pri pokuse o postavení bloku dostanete chybovú hlášku do chatu. Na oboch horizontálnych osách naopak nájdete tzv. "World border" (hranicu sveta), cez ktorú sa nedá dostať.

Zaujímavosť: Situácia v rohoch a na okrajoch mapy bola pomerne zaujímavá, v dnešnej dobe už neexistujú dva fenomény, ktoré predtým postihovali bloky vygenerované ďaleko od stredu mapy (súradnice 0 128 0). Prvá oprava prišla vo verzii Beta 1.8 (kedy zmizli "Far Lands", viď. Http://minecraf­t.gamepedia.com/Far_Lan­ds) a druhá vo verzii 1.8 (to pribudla spomínaná hranica, viď. Http: //minecraft.ga­mepedia. com / World_border a tým sa vyriešil problém "fake chunks" (nepravých zavalitý, o chuncích viac nižšie), viď. http://minecraft.gamepedia.com/World_boundary).

Svet nie je tvorený iba jednotlivými kockami, ale kocky sú spájané do väčších celkov. Týmto jednotkám sa hovorí "zavalitý" [canko], ich rozmer je 16x256x16 blokov. Používajú sa pri načítaní sveta, updatované blokov, simulácie pohybu entít - všetko sa odohráva v rámci daného zavalitý. Ďalej ešte existujú úplne špeciálny zavalitý, hovorí sa im "spawn zavalitý". Je to oblasť 12x12 zavalitý, ktorá je hrou stále načítaná (ostatné zavalitý sa vypínajú a zapínajú podľa toho, či je v nich hráč alebo nie). Tieto zavalitý majú špeciálne využitie, my sa nimi zatiaľ zaoberať nebudeme, ale záujemcov odkáže opäť na wiki: http://minecraft.gamepedia.com/Spawn_chunk.

Smer pohľadu

Druhá položka na debug screenu je "Facing:". Má dve časti, v prvej z nich sa ukazuje, na ktorú svetovú stranu sa momentálne pozeráte, a v zátvorke je uvedené, ktoré z horizontálnych osí to odpovedá. Sú teda celkom štyri:

  • 0 - East (východ) - os x +
  • 1 - South (juh) - os z +
  • 2 - West (západ) - os x-
  • 3 - North (sever) - os z-

Keď sa teda z bloku 0 64 0 vydáte priamo na sever, bude sa postupne viac a viac do mínusu odčítať pozície na osi x, ostatné osi budú stále na rovnakom čísle.

Druhá časť riadku nám ukazuje dve ďalšie súradnice, známe ako "ry" a "rx" (v tomto poradí). Je to rotácie pohľadu, teda smer, kam sa pozeráte. Ako vidíte, neexistuje žiadne "rz", to preto, že nemôžete nakloniť hlavu na stranu ( "pritlačiť si ju na plece"). Poďme si povedať, ktorý smer každá z os reprezentuje. Pre tých z vás, ktorí poznajú hľadanie na mape či glóbusu podľa severnej šírky a východnej dĺžky to nebude problém, pre tých, ktorí nie, by to mohlo byť trochu divné, pretože osi sú "akoby obrátene", hneď uvidíte prečo.

Prasa so zapnutým HITBOX pre demonštráciu os pohľadu v Minecraftu. - Programovanie v Minecraftu

Ako vidíte na tomto prasaťu, u ktorého som nechal vykresliť HITBOX (raz si povieme ako), čo je pomôcka určujúca "tvar" danej entity - určuje, kadiaľ môže prejsť, kam ju môžeme zasiahnuť ..., má okolo seba taký červený štvorec ( z hľadiska pohľadu sa jedná o kruh, ale takto to je kvôli HITBOX) az očí mu vychádza modrá čiara, tá ukazuje, kam sa prasa pozerá.

Keď sa bude modrá čiara (tzn. Smer pohľadu) pohybovať horizontálne, teda po červenom kruhu, bude sa meniť "ry". To je preto, že meníme "natočenie" osi y pohľadu - meníme ho "v rámci" osi x, pretože sa po nej pohybujeme. Podobne, ak pohybujeme modrou čiarou vertikálne, teda kolmo na červený kruh, bude sa meniť "rx" - pretože meníme natočenie osi x pohľadu, a to na osi y, po ktorej sa pohybujeme. Os rx má rozsah od -90 (pozeráme sa priamo nad seba) do 90 (pozeráme sa priamo do zeme). Os ry má rozsah od -180 do 180, prechod medzi hodnotami je na severe a juhu.

Príkazy / tp a / teleport

Teraz sa už pozrieme na to zábavné a to na príkazy pre teleportáciu. Máme je celkom dva, / teleport pribudol až nedávno, vo verzii 1.10, ale priniesol veľkú revolúciu. Začneme však starším príkazom, ktorý je v hre prakticky od doby vzniku serverov, príkazom / tp. Syntax je nasledovná:

/tp <entita> <<cílová entita>|<souřadnice <x, y, z> [ry, rx]>

Ako vidíte, v zápise syntaxe nám pribudol symbol "|" - zarážka, tá značí, že použijete buď jeden, alebo druhý argument. V tomto prípade je v druhom argumentu ten, ktorý označuje cieľovú destináciu pre entitu z prvého argumentu. Táto destinácia je buď iná entita (špecifikujete selektorom) alebo súradnice. Ak určujete súradnice, povinné sú iba x, yaz, ak nedosadíme ry a rx, budete sa pozerať rovnakým smerom, ako pred teleportáciou.

Teraz teleportuje naše prasa Josef k sebe. Použijeme na to znalosti z minulého dielu:

/tp @e[name=Josef] Krepsy3

Ešte teleportuje prasa späť do ohrádky. Otvorte si debug screen a doletu si do ohrady. Pozrite sa (aby sa označil) na blok tvoriaci podlahu ohrádky. V ľavom bloku pribudne riadok "Looking at:" (pozerám sa na).

Vidíte, že zobrazuje súradnice bloku označeného kurzorom. Ak by sme prasa teleportoval do tohto bloku, zabili by sme ho, lebo ako pri hráča je pri teleportáciu entít použitý dolný blok, ktorý entita zaberá, a je teleportovaných do priestorov cieľového bloku. Pripočítame teda k y-súradnicu jeden blok a aplikujeme:

/tp @e[name=Josef] -773 56 333

(Vo vašom svete sa súradnice budú samozrejme líšiť)

Relatívnej pozície a rozdiely príkazov

Skúste teraz vykonať nasledujúci príkaz (stojte pri tom na zemi):

/tp @e ~1 ~2 ~

Obe ošípané a vy ste vyskočili dvaja bloky do vzduchu a jeden blok na juh. Použili sme totiž relatívnej súradnici. Teda nás príkaz teleportoval o 1 blok dopredu na osi x oproti pôvodnej súradnicu, o 2 bloky hore na osi y oproti pôvodnej súradnica ao 0 blokov na osi z oproti pôvodnej súradnici. Ako vidíte, vykonali sme to pomocou znaku "~" tilda. Môžeme teda urobiť napr. Otáčanie alebo pohybovanie:

/tp @e ~ ~ ~ ~ ~5
/tp @e ~-0.3 ~ ~0.3

Napojíte Ak vyššie zmienené príkazy na redstone obvod "clock", dostanete postupné otáčanie alebo diagonálny pohyb vpred. Pamätajte: Nenastavujte hodiny príliš rýchlo, nech ste schopní ich včas vypnúť.

Teraz si ukážeme rozdiel medzi príkazmi. Najprv syntaxe / teleport:

/teleport <entita> <souřadnice <x, y, z> [ry, rx]>

Ako vidíte, / teleport už neumožňuje teleportáciu na objekt, ale iba na súradnice. Ak zadáte absolútnu súradnice, nespoznáte rozdiel, ten nastáva s relatívnym pozicováním (~). Ako viete / tp bral relatívne súradnice podľa pôvodnej lokality cieľovej entity. Skúste ale do command bloku napísať:

/teleport @e ~ ~1 ~

Všetky entity skončí na command bloku. / Teleport teda berie relatívnu pozíciu vykonávateľa (executora - viď. Diel o príkaze / execute), čo znamená, že entity teleportuje relatívne voči sebe. To nám dáva obrovský potenciál, napr. Môžeme nad hráča teleportovať mačku, aby ju mal na hlave :) O tom však inokedy, pretože na podobné veci nemáme zatiaľ potrebné znalosti. My zatiaľ vyskúšame príklad vyššie, vykonajte spomínaný príkaz vy (v chate). Sami povyskočíte jeden blok a ošípané budete mať v ten moment "v hlave".

To by bolo všetko pre prvú časť pozicovanie, v druhej sa pozrieme na selektorové argumenty súvisiace s pozicováním, je ich pomerne dosť - x, y, z, r, rm, rx, rxm, ry, rým, dx, dy, dz - takže sa máte na čo tešiť. Svet máte ako obvykle na stiahnutie nižšie.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 20x (510.63 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Minecraft

 

Predchádzajúci článok
Programovanie v Minecraftu - selektorové argumenty, entity
Všetky články v sekcii
Programovanie v Minecraftu
Preskočiť článok
(neodporúčame)
Programovanie v Minecraftu - Pozíciovanie - časť II.
Článok pre vás napísal krepsy3
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se učí programovat zde na itnetworku, zatím zejména jazyk C#. Znalosti chce mít ucelené, proto při vývoji aplikací studuje potřebné funkce do hloubky. Vyzná se v programování ve hrách, jako je Minecraft či Ricochet.
Aktivity