Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez pankracy

  1. Dziękuje..Ze spritem ,który zawiera animacje składająca się z kilku ilustracji działa..;-) Jeszcze dwa pytania: 1.A co w przypadku,kiedy skończą się już ilustracje oraz tekst i chciałbym przejść do następnego pokoju po spełnieniu wszystkich tych warunków? 2.Jeśli ustawie w spricie animacje składającą się z tych ilustracji i dopasuje ją na cały ekran do wielkości roomu,to tekst mój jest zakryty tymi ilustracjami.. jak ustawić żeby tekst był na wierzchu? a nie za ilustracja? bo obecnie mam ustawiony room większy,a sprite z ilustracjami są wyśrodkowane a poniżej po za obrazkiem tekst jest wyświetlany.
  2. Tak mam każdy sprite oddzielnie w plikach,a nie w jednym pliku:-) Ok funkcja sprite_get_number jest tu w moim przypadku źle użyta. Przyznam szczerze,że nie znam tej funkcji co Mi podałeś array_length_1d . Próbuje dalej to złożyć,ale pogubiłem się już. Dalej Mi wyświetla Pierwszy tylko sprite czyli ilustracja1 i tekst z msg[0]
  3. Cześć wszystkim, Próbuje stworzyć proste intro obrazkowe.. Chciałbym uzyskać taki efekt. Jest ilustracja i pod ilustracją jest tekst i teraz kiedy nacisnę klawisz enter zmieni się ilustracja i zmieni się tekst pod ilustracją aż skończą się ilustracje lub tekst i wtedy po naciśnięciu też klawisza enter przejdę do następnego roomu. Zacząłem już tworzyć te intro obrazkowe. Chcę umieścić wiadomości w tablicy,a ilustracje w spritach jako osobne podobrazy. w create zrobiłem w taki sposób index = 0 //Zmienna,która przechowuje, w której wiadomości/podobrazie jestem msg[0] = "na poczatku powinna wyswietlic sie ilustracja nr 1" msg[1] = "Teraz powinna wyswietlic sie ilustracja nr 2" msg[2] = "Na koniec powinna wyswietlic sie ilustracja nr 3" msg[3] = "" // Dodanie dodatkowej pustej wiadomości do tablicy msg, aby uniknąć awarii po zakończeniu ilustracji W Stepie mam tak i nie działa to prawidłowo. if (keyboard_check_pressed(vk_enter))//Zwiększyć ten indeks o jeden, jeśli naciśne Enter index++; if (index == sprite_get_number(spr_ilustracja4)) { // Slajd kończy się, gdy osiągnie numer obrazu spr_ilustracja4 lub długość tablicy msg // to koniec } W Draw mam tak,ale to akurat jest źle.. draw_text(x+200, y+750, msg[0]); draw_sprite(spr_ilustracja1, 0, x+640, y+360); //tu poznizej tekst najezdza sie na poprzedni tekst... draw_text(x+200, y+750, msg[1]); draw_sprite(spr_ilustracja2, 0, x+640, y+360); draw_text(x+200, y+750, msg[2]); draw_sprite(spr_ilustracja3, 0, x+640, y+360); Proszę pomóżcie Mi jak to poskładać do kupy żebym mógł osiągnąć efekt jaki opisałem wyżej w poście. za wszelkie sugestie porady z góry dziękuje:-)
  4. Dzięki Konrad za info;-) swf obsługuje bez gradientów GMS 1.4 właśnie to przetestowałem ;-)
  5. Cześć wszystkim, Mam pytanie..po za grafiką rastrową którą zapisuje w formacie PNG.czy GMS 1.4 jest w stanie odtworzyć też bezproblemowo grafikę wektorową? Załóżmy miałbym sprity scenerię tła w grafice wektorowej. Sprawdzałem,że format SWF można zaimportować,a jak z innymi formatami wektorowymi?
  6. Cześć wszystkim, Zastanawiam się,czy można w GMS 1.4 wrzucić gotową animację(wcześniej przygotowaną w innej aplikacji),która będzie intrem gry.Jest taka możliwość? Czy GMS jest wstanie odtworzyć animacje? jeśli tak to w jakim formacie powinna być ona zapisana?
  7. Cześć wszystkim, Mam prymitywny pasek ładowania, który opiera się na animacji sprita...która jest zdefiniowana w evencie Create,ale to nie jest dobre rozwiązanie.Używam go w Splash screen. Czy ktoś z was ma przykład bardziej złożonego paska loading bar(np wskaźnik w procentach), który ładuje się a po załadowaniu przechodzi do kolejnego roomu? Z góry dziękuje.
  8. Cześć wszystkim, Mam takie pytanie, Chciałbym zastrzec nazwę swojej gry jak i scenariusz do gry oraz logo firmy w jaki sposób to zrobić? Co do loga to rozumiem,że w w urzędzie patentowym? Jak nabyć prawa autorskie do swojej gry?
  9. Cześć wszystkim, Próbuje rozwiązać problem z nadpisującym się wynikiem do highscore po ukończeniu gry. Wygląda to tak,że cały czas jest tylko jeden wpis,a powinno być top 10 najlepszych wyników. Dziwna sytuacja...bo np jeśli zapisze grę i załaduje z load game gre i nastepnie jak skończe grę i nastąpi zapis do highscore to tworzy się niżej nowy rekord zapisu... Tylko dlaczego przy wyborze gry od nowa nadpisuje się rekord w highscore? Nie będę tu wszystkiego wklejał żeby nie robić bałaganu. obj_game_controller step if (global.life <= 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 120; // 150 to 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } } obj_highscore create global.pScore=0 globalvar highscores; highscores=ds_list_create() //Wczytaj punkty z dysku var f=file_text_open_read("highscore.dat") if(f>-1) { var s=file_text_read_string(f) //show_debug_message(s) s=json_decode(s) if(s!=-1 && ds_exists(s, ds_type_map) && ds_map_exists(s,"default")) { var m=s[?"default"]; for(var _i=0; _i<ds_list_size(m); _i++) { if(ds_exists(m[|_i], ds_type_map)) { var _m=ds_map_create(); ds_map_copy(_m, m[|_i]) ds_list_insert(highscores, _i, _m) ds_list_mark_as_map(highscores, _i) } } } ds_map_destroy(s) file_text_close(f) } scrypt score_add ///score_add(name,score) if(ds_exists(highscores, ds_type_list)) { var m=ds_map_create(); m[?"name"]=argument0 m[?"score"]=argument1 ds_list_add(highscores, m) ds_list_mark_as_map(highscores, ds_list_size(highscores)-1) score_sort() if(ds_list_size(highscores)>10) { ds_list_delete(highscores,10) } }
  10. A nie będzie tak,że jak użyje show_debug_message() to na końcu kodu może mi się wyświetlić bardzo dużo informacji związanych z image_speed=0 ? Ale przecież zmiana sprita bohatera i jego ramki animacji mam w obj_player bo gdzie indziej mógłbym mieć? przecież nie w obiektach wrogów czy w pułapkach ani w kolizjach. To są wyżej moje eventy Step i Step End..więcej nie mam.
  11. Szukam przyczyny... To jest mój caly kod ze Step i End Step bohatera oraz Create tak automatycznie pokazuje Mi zerową klatkę:-/ Kod w obj_player wygląda u mnie następująco Obj_player Step ///ustawienia ruchu Bohatera // gdy Bohater jest zamrozony zatrzymujemy go if(zamroz==true) { x = zamroz_x; y = zamroz_y; gravity=0 vspd=0; hspd=0; } //licznik czasowy gry rs_timer ++; ///auto unstuck kiedy nam Bohater sie zaklinuje to podana nizej funkcja go odblokuje while(place_meeting(x,y,other)) { dir = point_direction(x,y,other.x,other.y) x = x + lengthdir_x(-1,dir) y = y + lengthdir_y(+10,dir) other.alarm[0] = room_speed; } if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod { if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod { if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage { if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0) { image_speed=1 } else { image_speed=0; } if (vspd > 25) //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.) { global.damage+=5 } //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.) if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia { other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen. global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej } } if(no_text()) //teraz Bohater stoi jak jest odwarzana sekwencja tekstowa textboxa { ///Kontrola if !place_meeting(x,y,obj_water) { //Normalny ruch if drabina == false { if key_check_pressed(key.jump) && wPowietrzu == false { vspd = -10-sign(pwrupJmp*3); silaSkoku = 3; //Zeskakiwanie w dol if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } else if key_check(key.jump) && silaSkoku > 0 { audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu vspd -= 2+sign(pwrupJmp); silaSkoku--; } else { if key_check_released(key.jump) && silaSkoku > 2 { vspd += 2+sign(pwrupJmp); } silaSkoku = 0; } if key_check(key.action) && zegarAtaku == false { //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol zegarAtaku = 26; atakBierzacy = 1; with instance_create( x+(image_xscale*12), y-26, obj_projectile) //idealnie ta funkcja obraca pocisk gracza lub wroga { hspd = other.image_xscale*15; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny speed=4; owner = par_player; sila = 0; eksplozja = true; zasiegEksplozji = 30; silaEksplozji = 2+(sign(other.pwrupStr)*8); //image_blend = c_black; //kolor lotu pocisku audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu } } if key_check(key.right) && !key_check(key.left) { if hspd < 8+(sign(pwrupSpd)*5) { hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5)); } image_xscale = 1; } if key_check(key.left) && !key_check(key.right) { if hspd > -8-(sign(pwrupSpd)*5) { hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5)); } image_xscale = -1; } //Drabina if place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable) && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Wspinanie sie if drabina == true { var __hsign = key_check(key.right)-key_check(key.left); var __vsign = key_check(key.down)-key_check(key.up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-32,par_climbable) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable) { drabina = false; } } } else { //Plywanie kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up)); if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 { hspd += lengthdir_x(.5,kierunekPlywania); if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) { vspd += lengthdir_y(.5,kierunekPlywania); //audio_play_sound(dzwiek_anatol_plywa, 1, false); //odtwarzamy dzwiek gdy anatol plywa } } if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory vspd = -12; } } } //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza if place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid) { drabina=false; } //Normalny ruch if drabina == false { if key_check(key.down) && wPowietrzu == false { //Zeskakiwanie w dol if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } } if vspd>0 && place_meeting(x,y,par_climbable) then drabina=true; if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable) && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) then drabina=false; if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) { zegarAtaku = 16; atakBierzacy = 1; with instance_create(x+10,y-26,obj_projectile) { hspd = other.image_xscale*10; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny owner = par_player; audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu } } //nabieranie powietrza if tlen<10 { if distance_to_object(obj_water)>1 { tlen+=0.2 } } //jesli nie ma powietrza energia ucieka i bohater potem traci zycie if tlen<0.01 { global.hp-=0.2 } if global.hp<=0 { global.life -= 1; } Obj_player End Step ///Sprity if(instance_number(obj_napis_plansz)=0 && no_text()) { if !place_meeting(x,y,obj_water) { if wPowietrzu == false && key_check(key.right) = key_check(key.left) && sprite_index != spr_player_stand && drabina == false { sprite_index = spr_player_stand; image_index =0; } if wPowietrzu == false && (key_check(key.right) || key_check(key.left)) && key_check(key.right) != key_check(key.left) && sprite_index != spr_player_run && drabina == false { sprite_index = spr_player_run; image_index = 0; } if wPowietrzu == true && drabina == false { sprite_index = spr_player_air; var cmin = 0, cmax = 0; if vspd <= -1 { cmin = 0; cmax = 5; } else if vspd >= 1 { cmin = 5; cmax = 10; } else { cmin = 5; cmax = 5; } klatkaAnimWPowietrzu = clamp(klatkaAnimWPowietrzu + 0.1, cmin, cmax); image_index = klatkaAnimWPowietrzu; } if drabina == true { if x == xprevious && y == yprevious { if sprite_index != spr_player_hang { sprite_index = spr_player_hang; } } else { if sprite_index != spr_player_climb { sprite_index = spr_player_climb; } } } if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_index = 89-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 && (key_check(key.right) || key_check(key.left)) { sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23-(odejmij); odejmij -= 1; } kierunekPlywania = point_direction(xprevious,yprevious,x,y); wysKierunek = kierunekPlywania; if image_xscale < 0 { wysKierunek += 180; } } else { if sprite_index != spr_player_water { sprite_index = spr_player_water; image_index = 0; } if key_check(key.right) && !key_check(key.left) && image_xscale = -1 { image_xscale = 1; wysKierunek -= 180; } else if key_check(key.left) && !key_check(key.right) && image_xscale = 1 { image_xscale = -1; wysKierunek += 180; } if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 { image_index += 2; if image_xscale > 0 { wysKierunek -= angle_difference(wysKierunek,kierunekPlywania)/16; } else { wysKierunek -= angle_difference(wysKierunek,180+kierunekPlywania)/16; } } } //animacja do przesuwania skrzyni if wPowietrzu == false && (key_check(key.right)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) {sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij); odejmij -= 1; } else if (key_check(key.left)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) { sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij); odejmij -= 1; } } Obj_player Create /// Glowne deklaracje zmiennych Bohatera ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); zbieranie=true; eksplozja = false; zasiegEksplozji = 22; silaEksplozji = 10; klatkaAnimWPowietrzu = 0; global.damage=0; //zmienna odzpowiedzialna za obrazenia zadawane po upadku z duzej wysokosci global.hp = 100; global.hit=0; //zmienna odpowiada za obrazenia kuli i miganie maxHp = 100; zegarAtaku = 0; odejmij = 0; //zmienna potrzebna do przesuwanie skrzynki w end step atakBierzacy = 0; global.zegarObrazen = 0; kierunekPlywania = 0; wysKierunek = 0; silaSkoku = 0; czasSkoku = 0; drabina = false; rs_timer = 0; //licznik czasowy w grze tlen=10;//ilosc tlenu //Moce specjalne pwrupSpd = 0; pwrupStr = 0; pwrupJmp = 0; //Pozycja odrodzenia bohatera i wywolanie skryptu widoku centralnego na graczu spawnX = x; spawnY = y; centerViewOnMe(); //zachowanie pozycji gracza przy checkpointach if (global.checkpointR == room) { x = global.checkpointx; y = global.checkpointy; } start_x = x; start_y = y; //funkcja dodaje HUD gracza na planszach bossowych if instance_exists(obj_game_controller) obj_game_controller.visible=1 else instance_create(0,0,obj_game_controller); //zamrazanie bohatera zamroz = false; zamroz_x = x; zamroz_y = y; playerSlot = 1; //ustalamy slot dla gracza numer 1 kierunekPlywaniaGamepad = 0;
  12. if image_index = 88 then image_speed=0; Kurcze nie pomaga;/ powinno zatrzymać sprita ataku na ostatniej ramce... rozwiązanie poprzednie,ale nie działa: Step obj_player if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; if image_index == 88 { image_speed = 0; } image_index = 89- (zegarAtaku); attClock -= 0.5; pomysły już mi się kończą;/ nadal nie działa nie chce zatrzymywać się na ostatniej ramce animacji. edit. próbowałem jeszcze czegoś takiego w evencie other animation end dałem tak if (sprite_index == spr_player_attack) { image_index = image_number - 1; // zatrzymuje sie na ostatniej ramce image_speed = 0; // stop animacja } Niestety to też nie pomaga i dalej kurcze problem jest,że nie chce zatrzymać się na ostatniej ramce animacji..kurcze:/
  13. dodanie takiego warunku też nic nie daje if image_index = 89 then image_speed=0;
  14. Dzięki chłopaki.. Dziękuje Konrad:-) Kurcze zupełnie inaczej to wygląda niż w ifach.. W przypadku pierwszym ten sposób pomógł..i bohater jak skacze są odtwarzane z odpowiednią prędkością ramki obrazu i jak zetknie się z podłożem to wszystko wraca do normy. Natomiast przypadek z ramkami animacji ataku jest nadal ten sam...nie pomaga te wyżej rozwiązanie.. nie dość,że animacja się nie zatrzymuje na ostatniej ramce to tu też image_speed spowodował,że animacja bohatera kiedy biegnie to szuranie po planszy. if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = clamp(89-(zegarAtaku), 0, 89); zegarAtaku -= 0.5; }
  15. Staram się Gnysek, Też się za to już wziąłem zmniejszyłem zegarAtaku na wartość 0.5 jest lepiej,ale zastanawiam się,czemu animacja ataku sprite_index = spr_player_attack się zapętla? wciskam klawisz X i puszczam i animacja ataku mi się zapętla zamiast zatrzymać się na ostatniej ramce animacji to wraca do początkowej... obj_player end step if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = 89-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_speed = 0; image_index = 6-(zegarAtaku); zegarAtaku -= 0,5; } druga sprawa... Zmieniłem kod dla animacji skakania. Teraz wyświetla mi 10 ramek. Ale problem polega na tym,że dzieje się to tak szybko,że nie widać kilku ramek. Więc dodałem image_speed=0.5 teraz przy skoku działa to idealnie.. ale jak już bohater wyląduje na podłożu,to animacja biegania nie działa.Bohater się szura po planszy.. te image speed obstawiam,że muszę dać warunek który sprawdzał by podłoże? że jak jest w powietrzu to image_speed=0.5 a jak na ziemi to jest tak jak było wcześniej. if inAir == true && climbing == false { sprite_index = spr_player_air;// wyswietlaj animacje skakania } event-other-animation end if(sprite_index == spr_player_air) { image_index = image_number - 1; }
  16. Nic to nie daje..nadal ta sama sytuacja..zastanawiam się co jest tego powodem..skoro image_speed=0; powinno zatrzymać animacje sprita. step if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = 89-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_speed = 0; image_index = 6-(zegarAtaku); zegarAtaku -= 1; }
  17. Próbowałem też użyć wartości mniejszej od 1 Nie widać tego momentu jak bohater wyciąga za pleców broń..tylko od razu przyjmuje pozycje ataku. Mask_player mam ustawiony ten sam sprite z tyloma ilościami ramek co niżej ma spr_player_attack I powiedzcie Mi bo meczę się z tymi ifami. W nowym spricie ilość ramek skoku ma 10,a tu mam na starym spricie ustawione zaledwie 2. Jak to ustawić,że przy skoku bohatera będzie wyświetlone te 10 ramek animacji? w end stepie obj_player mam tak if wPowietrzu == true && drabina == false { sprite_index = spr_player_air; if vspd <= -1 { image_index = 0; } else if vspd >= 1 { image_index = 2; } else { image_index = 1; } } if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_index = 89-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 1; } a tu niżej w stepie obj_player mam tak if key_check(key.action) && zegarAtaku == false { //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol zegarAtaku = 26; atakBierzacy = 1; with instance_create( x+(image_xscale*12), y-26, obj_projectile) //idealnie ta funkcja obraca pocisk gracza lub wroga { hspd = other.image_xscale*15; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny speed=4; owner = par_player; sila = 0; eksplozja = true; zasiegEksplozji = 30; silaEksplozji = 2+(sign(other.pwrupStr)*8); } }
  18. To akurat już przerabiałem image_speed...:-) to nie pomaga...
  19. Cześć wszystkim, Ustawiłem sobie nowego bohatera.Stary miał wymiary 50x50 a nowy obecnie ma 128x74. ustawiłem odpowiednio maskę kolizji bohatera. Natomiast mam problem z ustawieniem maski ataku bohatera. Bo w starym spricie bohatera kiedy bohater wykonywał atak to składał ręce i strzelał z baniek. Natomiast ten nowy sprite ataku ma bardziej skomplikowany atak. Nowy Bohater ma na plecach broń i kiedy wykonuje atak to wyciąga broń za pleców i przyjmuje atak trzymając broń. Kombinuje z ustawieniem tej maski ataku i wygląda to tak,że przy ataku bohater próbuje wykonać ruch ręka się unosi do góry i z powrotem wraca..nie wyciąga broni i nie przyjmuje pozycji ataku. Może za dużo mam obrazków animacji w spricie ataku? bo aż 89 Jak to ustawić? Ok chłopaki ogarnąłem. Problem polegał na tym,że musiałem ustawić końcową liczbę animacji sprita i teraz jest ok;D Mam tylko jedno pytanie. Moja animacja bohatera jak atakuje 89 obrazków,czy można to trochę zwolnić jej odtwarzanie? bo obecnie jest tak,że naciskam klawisz pod którym mam zdefiniowany atak i bohater szybko wyciąga broń i tak to wygląda.. Nie widać tej chwili jak wyciąga za pleców karabin tylko od razu go w ekspresowym tempie wyciąga;-)
  20. Mam tak:-) draw_text_ext(vx+12,(view_yview + view_hview)- 1-15-100-2,string_copy(string(text),1,round(leght)),-1,596); tekst jest w boksie nie zależnie od rozdzielczości...jeszcze raz dzięki chłopaki Konrad Tobie tym bardziej za naprowadzenie mnie błędnego rycerza na trop;-)
  21. Bingo chłopaki;D Bardzo dziękuje Konrad za pomoc;D Gnysku Tobie też mimo,że krzyczysz;-) ale dobre chłopisko z Ciebie;-) Już ustawiłem;-)
  22. Czekajcie..tak chyba musi być;-) draw_text_ext(vx+12,(view_yview + view_hview)- 30-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
  23. Czyli od dolnej krawędzi mam liczyć pozycje tekstu jak opisałeś (view_yview + view_hview) - 120 ten parametr liczy nam już od dolnej krawędzi ekranu - 120px vy+586-20-100-2 - te parametry zmieniłem rozbijając 120px na cztery rozumiem tak?
×
×
  • Dodaj nową pozycję...