Pravidla Ucet
Nepřihlášen

Článek

Menu

Matematika ve hrách: Sinus
Napsal: Zikker
Přidáno: 16.12. 2011

Létající raketka může být složitější, než se zdá. Ale stačí použít hlavu společně s matematikou a máme po starostech. To všechno lehce zvládnete s tímto článkem!

Vítám vás u mého prvního článku, dnes vyřešíme známý problém začátečníků, otáčející se raketku, co střílí. Pro ty zkušené je to banalita, ale pro úplné začátečníky neřešitelný problém. Když jsem já začínal, tohle mi nikdo nechtěl vysvětlit, proč? To je mi záhadou do dnes, ale já se to rozhodl změnit.

Co budeme potřebovat?

Prvně spíš specifikuji, co budeme vlastně dělat. Máte tedy raketku (svrchu), která se otáčí v rozpětí 360°. Také může létat dopředu a dozadu. To je zatím jasné, to si každý vytvoří hravě sám. Tenhle návod je však především o určité části střílení, což lodička bez problémů zvládá, ale je to trochu věda, protože střílí ze svého křídla. Popíšeme si tedy, jak vytvořit objekt, který bude z pozice na křídlu střílet a zároveň se natáčet s lodí.  
  První, co budeme potřebovat, je znát úhel otočení. Ten zjistíme jednoduše pomocí „direction“. Musíme si tedy vytvořit objekt, který se bude natáčet stejně s raketkou, tedy:  
direction=raketka.direction;
  A na kliknutí vystřelí. Ale samotnou střelbu zde popisovat nebudu, tenhle článek o tom není, je o trvalém umístění střílejícího objektu na křídle.  
Nezapomeňte na začátku nastavit raktetce direction=0; !
  Úhel už máme. Dále potřebujeme znát délku. Tu si prostě musíte změřit. Stačí si v GM sprite properities (první tabulka po dvojím kliknutí na obrázek) vycentrovat sprite, zapsat „x“, např. jako "x1". Následně dát kurzor na pozici žádané polohy třeba „kulometu“, který bude vpravo. Zapsat polohu posunutého „x", např. jako "x2" a odečíst jedno od druhého. A je to. Teď k teorii.

Sinus, co to je?

Sinus je goniometrická funkce, definována jako poměr protilehlé přepony a odvěsny v pravoúhlém trojúhelníku. Definována v oboru reálných čísel.
Dále budeme používat ještě kosinus, což je zase poměr přilehlé odvěsny a přepony. Asi mi polovina z vás nerozumněla, hned vám to objasním.  
  Doufám, že je vám to teď jasné. Je to v základu velice jednoduché, ale zpátky k praktickému využití.

Konečně kód

A máme tu finální část. Konečně se dostáváme ke kódu. Prvně vám ho ukážu a pak vysvětlím.  
delka=20; //tu si musíte změřit, nezapomeňte uhel=degtorad(raketka.direction); x=raketka.x+sin(uhel)*delka; y=raketka.y+cos(uhel)*delka;
  Takže, musíme začít podstatnou věcí, tohle patří do pravého kulometu. Změření jsem již vysvětlil, takže přejdeme k druhému řádku. Zde si načteme úhel - argument potřebný k sinusu a kosinusu. Ovšem sinus a kosinus vrací výsledek v radiánech, tedy musíme převést ze stupňů na radiány. Další řádek je složitější: Protože musíme začít na pozici raketky, je v „x“ prvně x raketky. K té přičteme délku strany trojúhelníku, kterou vypočítáme pomocí sinusu.  
  To stejné je pak i pro y, jen s tím rozdílem, že použijeme kosinus. A teď to celé ještě jednou, ale u levého kulometu. Musíme udělat to stejné, akorát místo "+" dáme "-".  
delka=20; //tu si musíte změřit, nezapomeňte uhel=degtorad(raketka.direction); x=raketka.x-sin(uhel)*delka; y=raketka.y-cos(uhel)*delka;
  A to je vše. Je toho málo? Mně se nezdá. Doufám, že to pro vás bude užitečné. Já jsem si vyléčil svůj komplex z dětství a vy máte zkušenost a znalost. Ale pozor! Zbytek si musíte udělat vy! Já vás jen navedl k tomuto. Tento návod není na ovládání raketky apod.   Těším se u dalšího článku.
Klíčová slova: matematika, programování, sinus
 

Komentáře:

Napsal: dj_porod
Přidáno: 01.06. 2014

I po letech, díky to za záchranu

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010