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