ZeroXbot Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 Mam kolejny problem. W przykładzie z miotaczem ognia spotkałem sie z takim kodem: GML if ( keyboard_check( vk_space ) ) { xx = x + sin( degtorad( direction + 90 ) ) * 16; yy = y + cos( degtorad( direction + 90 ) ) * 16; instance_create(xx,yy,flame); } Chodzi mi o to, że nie miałem jeszcze w szkole funkcji trygonometrycznych, ani pojęcia radian więc, czy mógłby mi ktoś powiedzieć za co odpowiedzialny jest ten kawałek kodu (3 i 4 linia kodu)?
Gość Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 sinus, cosinus - sinus ? oznaczany sin ? stosunek przyprostokątnej a; przeciwległej do kąta ostrego i przeciwprostokątnej c; cosinus (lub kosinus) ? oznaczany cos ? stosunek przyprostokątnej przyległej b; do kąta ostrego i przeciwprostokątnej c; degtorad - zmien na radiany (miara kata płaskiego w SI) direction = dokumentacja + 90 -trzeba tłumaczyć?? *16 - wszystko * 16
ZeroXbot Opublikowano 18 Października 2008 Autor Opublikowano 18 Października 2008 Dzięki za to wytłumaczenie, ale chodziło mi o kod jako całość, a nie rozkładanie go za czynniki.
Gość Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 Ach tak ! Kod tworzy obiekt płomień (flame) w miejscu zmiennych xx oraz yy tylko po naciśnięciu spacji. Zmienne opisałem i rozłożyłem na składniki. No a efekt - widzisz w przykładzie...
ZeroXbot Opublikowano 18 Października 2008 Autor Opublikowano 18 Października 2008 Rozumiem, że x + sin( degtorad( direction + 90 ) ) * 16 i ten drugi oblicza punkt na okręgu zataczanym przez obiekt strzelający, z którego "wydobywa się ogień". Zatem czy można tego użyć do dowolnego innego obiektu, czy trzeba by było zmiennić wartości liczbowe przy innym rozmiarze obiektu?
Gość Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 Można używać bez zmiany liczb :) A kod dobrze rozumiesz :)
lenin Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 Tak, możesz użyć także do innych obiektów, a zmieniając te wartości odsuniesz/przybliżysz/przesuniesz te punkty xx i yy. Podobnie ma się sprawa z GML lengthdir_x i lengthdir_y które działają na podobnych zasadach ;)
ZeroXbot Opublikowano 18 Października 2008 Autor Opublikowano 18 Października 2008 Z jednej strony rozumiem, o co w tym chodzi, ale z drugiej mam takie poczucie niewiedzy i nie chcę czekać aż do liceum, zeby to zrozumieć :/ Czy trygonometria jest naprawdę taka trudna, czy poprostu potrzebuję zobrazowania na przykładach jak to działa? Gdyby nie to pewnie już bym w tym kierunku śmigał (Może nie aż tak, ale dobrze bym sobie radził).
Matthew Opublikowano 18 Października 2008 Opublikowano 18 Października 2008 trygonometria to tylko wzory: tg(alfa) = przyprostokątna naprzeciw kąta alfa / przyprostokątna obok kąta alfa ctg(alfa) = przyprostokątna obok kątowi alfa / przyprostokątna naprzeciw kąta alfa sin(alfa) = przyprostokątna naprzeciw kąta alfa / przeciwprostokątna cos(alfa) = przeciwprostokątna / przyprostokątna naprzeciw kąta alfa są jeszcze arctg i arcsin, które obliczają kąt na podstawie stosunku boków trójkąta prostokątnego. W tym kodzie co dałeś mnoży się stosunek boków (sin i cos) przez długość kratki i wychodzi ci przesunięcie x i y.
ZeroXbot Opublikowano 19 Października 2008 Autor Opublikowano 19 Października 2008 Ok, a więc jak zrobić, żeby rzecz robiła się za obiektem (tak daleko, żeby go nie dotykała)?
Gość Opublikowano 19 Października 2008 Opublikowano 19 Października 2008 W ogóle ma go nie dotykać, czy jak? Dobra przerobie Ci przykład, ale powiedz jak daleko za?
ZeroXbot Opublikowano 19 Października 2008 Autor Opublikowano 19 Października 2008 Chodzi mi o to, że obiekt by zostawiał obiekt "klej", który by zwalniał przeciwników, no ale także jego. Chodzi mi o to by odległość między nimi była minimalna, byleby ich sprite'y nie zachodziłyby na siebie.
Gość Opublikowano 19 Października 2008 Opublikowano 19 Października 2008 Musisz zrobić inne XX oraz YY... A teraz w zależności w jakim kierunku jesteś zwrócony musisz tworzyć inaczej obiekt. W edicie dam przykład. E: AAA pomyliłem się... Chcesz tworzyć zawsze za obiektem :) Spoko zaraz się zrobi! E2 : Dobra chłopie: 1. Nie zmieniasz nic w kodzie! 2. Zmieniasz orginy, czyli : a)masz zapisany projekt? Jeśli tak zmieniasz tryb na ADVENCED, czyli w GM klikasz File i zaznaczasz Advenced Mode b)wchodzisz w ustawienia sprite'a bohatera klikając na SRITE'a dwukrotnie. c)zmieniasz orgin x na (w zależności od wielkości sprita) połowę X na minusie (np. sprite 32x32 zmieniasz -16x16, a wcześniej miałeś 16x16) Y pozostawiasz bez zmian d)uruchamiasz i sprawdzasz czy działa :)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się