Jump to content

Archived

This topic is now archived and is closed to further replies.

Mac70

Flash AS 3- kilka pytań

Recommended Posts

Próbuję stworzyć grę w tym języku programowania, ale mam kilka problemów i pytań, Proszę odpowiadać przejrzyście, ponieważ nie umiem "flashowej" gwary.

1. Jak można zrobić prosty silnik fizyczny (na przykład aby samochód na ekranie mógł driftować, przyspieszał z czasem aż do górnej granicy, a naciśnięcie strzałki prawej lub lewej nie wiązało się tylko ze zmianą położenia- ogólnie chodzi o to, jak zrobić, aby samochód poruszał się jak w rzeczywistości.

2. Przezroczystość- zrobiłem modele pojazdów, ale okazuje się, że mają one niechciany biały cień (wygląda to tak, jakby były prostokątami). Modele zostały wykonane w Paincie- jak zrobić coś, aby modele były przezroczyste?

3. Ruch- po mieście pokazanym w grze mają się poruszać pojazdy, tylko jak dać im rozkazy, aby poruszały się po dowolnych drogach i zgodnie z przepisami? Jak zrobić ten sam skrypt, tylko, że dla przeciwników, którzy by te przepisy łamali?

Link to comment
Share on other sites

Ad 1) Pytasz o matematykę i fizykę czy jak je zrealizować we flashu. Jeśli pierwszy wariant, to należy posłużyć się pojęciami masy, przyczepności a także wektorami prędkości oraz działających sił.

Ad 2) Zainteresować pojęciami color keying lub alfa blending. Obstawiam, że flash potrafi wykorzystać kanał alfa, więc to drugie rozwiązanie będzie bardziej uniwersalne.

Ad 3) Stworzyć ścieżki, po których mają się poruszać oraz węzły, w których mają decydować o zmianie ścieżki. Ścieżki to proste odcinki drogi, a węzły to skrzyżowania. Każda ścieżka powinna mieć informację o maks prędkości i kierunku jazdy, węzły o tym kto komu ustępuje i czy wolno z danej ścieżki wjechać

Link to comment
Share on other sites

1. Nie łatwiej było by Ci to napisać w AS2? O ile wiem to program w AS3 jest złożony z pojedynczych event'ów, a to przy pisaniu gry może być trochę męczące (przynajmniej w książce o podst. AS3 , przeczytałem całą, i używali tylko tych durnych event'ów i listener'ów...). Ale - twój wybór :P W AS2 mogę Ci we wszystkim pomóc, w AS3 - nie wiem :happy:

2.

pkt 1. - napisać (tak samo jak 3) ? Jeżeli chcesz dokładniej:

1. Dowiedz się np. dlaczego samochód w rzeczywistości driftuje.

2. Zobacz z jakich fizycznych przyczyn tak się dzieje.

3. Napisz :P

Mogę trochę podpowiedzieć( ale to jest kod AS2, nie wiem czy w AS3 też tak można pisać :P ):


var x_speed:Number = 0; // Przyspieszenie lewo-prawo
var y_speed:Number = 0; // Przyspieszenie góra-dół
var max_speed:Number = 256; // Maksymalna prędkość
var last_rotation = 0; // Ostatnia zapisana rotacja
var now_rotation = 0; // Teraźniejszy obrót autka

//...

function leave_marks_on_the_road(){
var new_mark = _root.marks.attachMovie( "mark", "mrk"+_root.mark.getNextHighestDepth(), _root.mark.getNextHighestDepth() );
new_mark._x = autko._x;
new_mark._y = autko._y;
new_mark._rotation = autko._rotation + 180;
}

//...
if( Key.isDown( Key.LEFT ) ){
if( x_speed < max_speed ){
x_speed--; // "--" bo jedzie w lewo, czyli jego pozycja w x się zmniejsza; Dla Key.RIGHT będzie za to "++"
now_rotation--; // Autko obraca się w lewo
}
} else if( !Key.isDown( Key.LEFT ) ){
if( x_speed != 0 ){
if( x_speed > 0 ){
x_speed--;
} else if( x_speed < 0 ){
x_speed++;
}
}
}

//...
if( now_rotation > last_rotation+90 || now_rotation < last_rotation-90 ){
if( y_speed != 0 ){
leave_marks_on_the_road();
if( y_speed > 0 ){
y_speed--;
} else if( y_speed < 0 ){
y_speed++;
}
}
}
//...

Ten kod jest łatwy (bo darowałem sobie trygonometrię, która się też może przydać) i nie jestem pewien jego działania (ale założenia ma dobre). Z resztą są to tylko urywki kodu podzielone "//...". Jeżeli go nie rozumiesz - cóż, ucz się dalej AS - to jesteś póki co zbyt początkujący na takie zabawy z fizyką (możesz próbować jak chcesz :P ).

pkt 2. Ściągnij GIMPa, albo PhotoShopa, wytnij białe tło i zapisz jako .PNG (.JPG zawsze ma tło).

pkt 3. Ehhh... Robienie tego "łapkami" (manualnie) będzie heroicznym wyzwaniem, zdajesz sobie sprawę xD ? Łatwiej by było jakbyś napisał engine, w nim układał sobie trasę, przyporządkowywał jej prędkość oraz typ - ulica / chodnik. To wszystko zapisywał np. w kilku tablicach, je zapisywał byś do pliku np. miasto001.bat. Później odczytywał plik przez flash'a, a ten już (zgodnie z napisanym przez ciebie enginem) - odczytał by po kolei każdą trasę, budynek, chodnik - i je poustawiał na mapce.

Druga sprawa - to losowe dodawanie przechodniów i losowych autek - jest już łatwiejsza. Mając wczytaną mapkę, ustawiasz zmienną na max przechodniów i autek, i "prosisz" flash'a żeby poustawiał ich losowo (x,y) w miejscach gdzie jest chodnik bądź ulica (No i żeby ustawił ich obrót na ten sam co ulica :P )

Tak samo jak poprzednio - jeżeli nie zrozumiałeś tego (teorii) to może być baaardzo trudno ze zrobieniem takiej gry :) Zrób najpierw sudoku, pacmana, shooter 2D, RPG, a potem takie pro pwnzory :P

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...