bigshark Opublikowano 5 Lutego 2005 Udostępnij Opublikowano 5 Lutego 2005 Mam znowu problem. Przypuscmy ze: Jest gra RPG. . Jednqak kazda gra rpg ma duuuuzo wrogow, o innych levelach. Jak zrobic zeby nie tworzyc dla kazdego wroga o innym levelu, osobnego objectu. Bo gdy bedzie tyle samo objectow wrogow co wrogow na planszy, to bedzie tego strrrrrasznie duuzo, A to BAAAAAAARDZO skomplikuje gre :( :( Jaki jest najprostszy i najwydajniejszy sposob na rozwiązanie tego problemu?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 5 Lutego 2005 Udostępnij Opublikowano 5 Lutego 2005 Według mnie prostym sposobem jest losowe generowanie poziomu wroga w zależności od poziomu BG. Czyli w create wroga level = floor(random(BG.level)+1) pewnie się pomyliłem gdzieś w nawiasach :) Ogólnie chodzi o wylosowanie liczby całkowitej z przedziału od 1 do BG.level czyli aktualnego poziomu bohatera. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Lutego 2005 Filar Społeczności Udostępnij Opublikowano 5 Lutego 2005 Najprostszy sposób jest taki by stworzyć jeden typ obiektu, który miałby różne zmienne lokalne określające jego cechy: name, class, level, energy, sprite itd. zależnie od których obiekt będzie przybierał postać żądanego wroga. Teraz aby stworzyć nowego wroga wystarczy się zaraz do niego odwołać. Załóżmy, że mamy generator potworów. Przykładowe tworzenie nowego wroga: id_wroga = instance_create(x,y,wrog); id_wroga.name = "Wilkołak"; id_wroga.level = 1; id_wroga.energy = 100; lub id_wroga = instance_create(x,y,wrog); with ( id_wroga ) { name = "Wilkołak"; level = 1; energy = 100; } Jednakże nie jest to 100% zadowalający sposób, ponieważ create tworzonego obiektu wykona się zawsze szybciej niż przypisanie zmiennych lokalnych z poziomu innego obiektu (reszta eventów jest następna w kolejce). Event create jest bardzo pomocny w takich sytuacjach, do "spersonalizowania" wroga na podstawie zmiennych zaraz na początku jego istnienia. Co w takim można zrobić? Wykorzystać sprytną sztuczkę przesyłu danych za pomocą zmiennych globalnych. Robimy tak: Na początku gry: global.transfer_value[0] = ""; global.transfer_value[1] = ""; global.transfer_value[2] = ""; Tworzymy nowy skrypt o nazwie nowy_przeciwnik var id_wroga; global.transfer_value[0] = argument2; global.transfer_value[1] = argument3; global.transfer_value[2] = argument4; id_wroga = instance_create(argument0,argument1,obiekt_wroga); a w create obiekt_wroga na samym poczatku dajemy: name = global.transfer_value[0]; lavel = global.transfer_value[1]; energy = global.transfer_value[2]; Teraz gdy chcemy stworzyć obiekt wystarczy wywołać taki skrypt: nowy_obiekt(x,y,"nazwa",level,energy); np. nowy_obiekt(100,100,"Goblin",1,20); Dzięki systemowi natychmiastowego przesyłania żądanych zmiennych do nowych obiektów wroga poprzez zmienne globalne, mamy pewność, że wartości będą możliwe do odczytu już w event create. To był kurs elastycznego i bardziej profesjonalnego pisania gry cz. 2 ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę