Skocz do zawartości

Amaterasu

Użytkownicy
  • Postów

    390
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Amaterasu

  1. W takim razie mam jakies 75% szans na to, ze przyjade Jestem ciekaw, jak to jest brac udzial w takim evencie
  2. Jesli masz tyle watpliwosci, to olej to i posluchaj Willa
  3. Dla GM kolor czarny ($000000) odpowiada alpha=0, bialy ($FFFFFF) to alpha=1 (w funkcjach _create_alpha_from_)
  4. Nocleg trzeba sobie samemu zalatwic, czy bedzie cos na miejscu?
  5. Amaterasu

    Top Hat

    This guy checks out!
  6. Dymek i wykrzyknik sa zbyt okragle
  7. GML //Event Create bohatera collided = 0 nearest = -1 GML //Event Step bohatera nearest = instance_nearest(x,y,billboard) if(nearest) { if(point_distance(x,y,nearest.x,nearest.y) < 20) { if(!collided) {collided = 1; global.predkosc_gracza = 0} } else collided = 0 }
  8. Jest jeszcze with(), w zależności od argumentu możesz iterować na jednym obieckie [wpisujesz ID obiektu, np. 100043 albo instance_create(x,y,obj)], wszystkich obiektach w roomie (all) albo na wszystkich kopiach danego obiektu (czyli nazwa obiektu, która de facto także jest liczbą). Można też wpisać self, czyli własne ID, albo other, które działa w evencie Collision with [obj]lub, ewentualnie, w zagnieżdżonej konstrukcji with(). Przykład: GML //Step obiektu ob1 var1 = 32 //zmienna danego obiektu ob1 with(ob2) { var1 = 24 //zmienna danego obiektu ob2 with(other) var1 += 4 //zmienna obiektu ob1 wywołującego obecnie with(ob2) } show_message(var1) var1 każdego obiektu ob1 wzrośnie o 4*instance_number(ob2).
  9. Teoretycznie istnieje funkcja point_in_triangle(px,py,x1,y1,x2,y2,x3,y3). x1 i y1 to współrzędne kamery, x2,y2 to wierzchołek na lewo od kamery (np. x1+lengthdir_x(zasieg_widzenia,kamera_direction-60),y2+lengthdir_y(zasieg_widzenia,kamera_direction-60), podobnie z x3 i y3. px i py to współrzędna obiektu, który testujemy na obecność w polu widzenia. Nie mam pojęcia, czy to będzie szybsze, ale w tym przypadku funkcje sin() i cos() wykonuje się tylko raz na step (o ile pozycje wierzchołków zapiszesz sobie w jakichś zmiennych).
  10. i teraz nie wiem, czy to nie był sarkazm, dla bezpieczeństwa użyję trybu serious GB ma paletę monochromatyczną 4 kolorów, a poszczególne tilesy mogą używać tylko 3 z nich (w tym 1 transparent). W dowolnym momencie NES może korzystać z 512 różnych tilesów, GB z 192 NES może scrollować obszar 512x480, GB 256x256 W jednej linii może być rysowanych jedynie 10 sprite'ów, maksimum 40 na ekranie. GB ma tylko 4 kanały dźwiękowe, brakuje nawet triangle wave. To tylko przykłady, pełną specyfikację obu urządzeń masz tu: NES vs GameBoy E: fixed link
  11. Najprościej jest zwiększyć room speed Albo poszukać odpowiedzi w starszych tematach, których było już co nie miara
  12. Amaterasu

    Warlocks

    Trzy klatki na zewnętrzną część trybu, 5 na wewnętrzną. Nie musiało to być robione ręcznie, taki efekt można w pół godziny zrobić np. w Blenderze. Dla mnie dużo bardziej niesamowity jest background. -sneak peek
  13. @Threef: Czytałem, jakie są ograniczenia sprzętowe Gameboya i sobie odpuściłem ten jam D :
  14. Nie lubię mieć w każdym obiekcie licznika, którego jedynym zadaniem jest dodawanie liczby co każdą klatkę. Zamiast tego tworzę jeden, globalny licznik (nazwijmy go global.counter) w obiekcie-kontrolerze; w Create każdego obiektu zapisujemy: GML spawnTime = global.counter; W Step kontrolera: GML global.counter ++; Żeby sprawdzić, ile istnieje dany obiekt, wystarczy wykonać zwykłe odejmowanie (można dokonać tego w dowolnym momencie gry): GML time = global.counter-spawnTime Jak masz 600 obiektów na planszy jednocześnie, to robi się to całkiem przydatne, a w dodatku dezaktywowanie obiektu nie powoduje zatrzymywania się licznika w czasie. Poza tym wszelkie efekty, jakie będziesz chciał dodać do gry i manipulujące upływem czasu, nie będą naruszały wieku obiektów w nieprzewidziany sposób - wystarczy manipulacja globalnym licznikiem. Edit: sorry Threef, jest późno i nie doczytałem całego tematu : ( Przynajmniej myślimy podobnie
  15. Precyzja current_time jest ograniczona (update dokonuje się co 16+2/3 ms). Jeśli chcesz zrobić porządny delta time, to masz dwie opcje: 1. ściągnąć sobie High Resolution Timer i zastosować kod YXE 2. przejść na darmowego GM: Studio, gdzie masz nie tylko wbudowany timer działający na zasadzie powyższego, ale też wbudowaną funkcję delta_time, która dokonuje obliczeń za ciebie (zalecana metoda).
  16. Zmienna lokalna to zmienna, ktora inicjujesz w evencie Create danego obiektu. Bezposredni dostep masz do niej tylko w tym obiekcie, inne obiekty musza korzystac z referencji. Przyklady: GML //Obiekt1, event Create hp = 100 //inicjacja zmiennej //Obiekt1, event Step if(hp < 100) hp += 1 //mozna operowac w dowolny sposob na tej zmiennej //Obiekt2, event Collision with Obiekt1 other.hp -= 50 //other to specjalna referencja dostepna w evencie Collision, oznacza ona Obiekt1, z ktorym zderza sie Obiekt2 //Obiekt2, Keyboard Press: Space Obiekt1.hp -= 50 //Obiekt1 jest tutaj referencja, jednakze tylko jednemu Obiekt1 na mapie zmieni sie hp* with(Obiekt1) hp -= 20 //w tym przypadku hp zmieni sie w kazdym Obiekt1 //*Obiekt1 z najnizszym ID (stworzony najwczesniej)</span> Zmienna globalna to zmienna, ktora inicjujesz w evencie Create dowolnego obiektu (a takze w Creation Code rooma). Nie ma do niegj bezposredniego dostepu, mozna to zrobic tylko korzystajac z referencji global. Przyklady: GML //Obiekt1, event Create global.hp = 100 //inicjacja zmiennej //Obiekt1, event Step if(global.hp < 100) global.hp += 1 //mozna operowac w dowolny sposob na tej zmiennej //Obiekt2, event Collision with Obiekt1 global.hp -= 50 //teraz nie ma referencji other, gdyz zmienna jest globalna i nie nalezy do zadnego obiektu //Obiekt2, Keyboard Press: Space global.hp -= 50 //podobnie jak wyzej with(Obiekt1) global.hp -= 20 //ten kod sprawi, ze kazdy Obiekt1 na mapie osobno odejmie wartosc zmiennej globalnej (np. 3 obiekty odejma 3*20 = 60)</span>
  17. GM:S ma mnostwo takich glupich bledow, ktore nie sa opisane w dokumentacji - nie sposob sie przed wszystkimi uchronic, czasem trzeba przesuwac kawalki kodu (jak w Twoim przypadku), czasem zrezygnowac z jednego rozwiazania na rzecz drugiego. Mozliwe, ze w wersji 1.3.1373 nie ma tego bledu, jesli jest, raportuj do supportu YoYo Games.
  18. GML if device_mouse_check_pressed(device,mb_any) and device_mouse_raw_x(device)<max_x and device_mouse_raw_x(device)>min_x and device_mouse_raw_y(device)<max_y and device_mouse_raw_y(device)>min_x Tu przydaje sie point_in_rectangle: GML if device_mouse_check_pressed(device,mb_any) and point_in_rectangle(device_mouse_raw_x(device),device_mouse_raw_y(device),min_x,min_y,max_x,max_y) Ja korzystam z tego sposobu (raczej jego wariantu z zwyklym mouse_x), moze nie najladniejszy, ale w jednym kawalku kodu masz kontrole nad calym GUI
  19. Wow, dlaczego nie wiedzialem o istnieniu takiej funkcji : O To rozwiazuje mnostwo problemow w moim projekcie
  20. Och, czyli mamy tu XY problem, przy czym twoim X jest zrobienie kontrolek do sterowania, a Y - przyczepienie kontrolek do ekranu. Gdybym ja mial zrobic cos takiego, napisalbym osobno kod na rysowanie kontrolek, a osobno na sprawdzanie, gdzie jest kursor podczas klikniecia i co ma zrobic, bedac w danej strefie ekranu (czy klikajac na danego sprite'a). Mozna to zrobic, wykorzystujac np. funkcje point_in_rectangle(,,,,,), point_in_circle(,,,,) - zaleznie od wygladu twoich buttonow. Edit: Na Androidzie zamiast mouse_x, mouse_y mozesz chciec uzyc device_mouse_x(device), device_mouse_y(device) [albo device_mouse_x_to_gui(device), device_mouse_y_to_gui(device)]
  21. GML draw_sprite_ext(sprite_index,image_index,view_xview+lengthdir_x(wsp_X,view_angle[0]),view_yview+lengthdir_y(wsp_Y,view_angle[0]),image_xscale,image_yscale,image_angle+view_angle[0],image_blend,image_alpha) pisze z glowy na telefonie, nie ma pewnosci ze to zadziala
  22. Nie wiem, czy to pomoże http://pcsupport.about.com/od/findbyerrorm...ssing-error.htm
×
×
  • Dodaj nową pozycję...