Skocz do zawartości

Cygnus

Użytkownicy
  • Postów

    330
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Cygnus

  1. właśnie już to robię chłopaki.. dzięki za radę;) parę rzeczy już ogarnąłem...obraca mi już się od ścian..jeszcze tylko od krawędzi niech się obraca..
  2. Dzięki;) Twój sposób jest całkiem ciekawy....ale zbyt skomplikowany obecnie jak dla mnie... ja obecnie zrobiłem tak... usunąłem część kodu z AI i tak jak myślałem if place_free powodowało błąd obracania ,kiedy wróg widział ścianę dziedziczącą z par_solid teraz jeszcze pozostało mi do naprawienia obrót wroga przy krawędzi obiektu dziedziczonego z par_solid czyli wróg zbliża się do krawędzi i ma zawracać,a nie spadać w dół..z tym mam problem... step wroga wygląda teraz tak STEP GML var stopped; stopped=0; image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_solid if place_meeting(x+5,y,par_solid) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_solid) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); }
  3. Wystarczy te co mam...na razie skupiam się na tym co jest nie tak przy obracaniu wroga;)
  4. Właśnie robię powoli porządki w kodzie..już nic więcej do wroga nie będę dodawał w końcu to platformówka.
  5. A,więc tak dałem wszędzie par_solid zamiast par_wall teoretycznie powinno już być w porządku... Ale teraz wróg podąża bardzo szybko w prawo,i jak napotka przeszkodę mur na scenerii,który ma nałożony obiekt niewidzialny par_solid to nie obraca się tylko zatrzymuje się i chodzi w miejscu w prawo,a jak ja się bohaterem wtedy zbliżę do niego,to odwróci się w moja stronę zacznie strzelać,tak to dziwnie wygląda... Dziwne to jest ponieważ rodzicem par_wall jest par_solid i on po nim wszystko dziedziczy... wygląda na to,że na par_solid nie działa funkcja if place_free albo coś jest nie tak...bo nie wykrywa krawędzi ani przeszkody po której ma zmienić wróg kierunek ruchu na przeciwny... kod wroga wygląda teraz tak po zmianach: step GML ///AI wroga Dino chodzi nerwowo i strzela jak nas zobaczy var stopped; stopped=0; if place_free(x+32,y+3) && image_xscale = 1 { image_xscale = -1; } if place_free(x-32,y+3) && image_xscale = -1 { image_xscale = 1; } image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_wall if place_meeting(x+5,y,par_solid) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_solid) && image_xscale = -1 { image_xscale = 1; } ------------------------------------------------------------------------------------------------------------------------ // to niżej jak zostanie ta część kodu,a górną chwilowo wyrzucę czyli AI,wróg zaczyna normalnie się obracać widziąc przeszkodę par_solid no,ale AI wtedy nie działa wroga.. ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } O dziwo jak wywalę tą nową część kodu z AI to wróg zmienia kierunek widząc przeszkodę z par_solid dziwna sytuacja,no,ale wtedy AI wroga nie działa:/
  6. zaraz dam wszędzie par_solid chociaż nie wiem,czy to akurat pomoże... dzięki
  7. Dobrze..naprawdę nie mam zamiaru z nikim się kłócić.Jeśli kogoś zdenerwowałem,to przepraszam nie miałem złych zamiarów. Słuchajcie może ktoś miał ten sam problem co Ja.. wróg ładnie obraca się i wykrywa krawędź na planszach zbudowanych z tilesetów,natomiast mam dalej problem z obracaniem się wroga i wykrywaniem krawędzi na planszach zbudowanych z ręcznie malowanych scenerii. No i teraz tak: par_wall par_wall dla niego parentem,czyli rodzicem jest par_solid par_wall ma mnóstwo dzieci,czyli wszystkie w sobie tilesety,które w momencie jak dodamy do nich rodzica par_wall stają się solidami widzialnymi po których można chodzić par_solid par_solid nie ma rodzica jego dziecko to par_wall depth mam ustawione na nim na -100 Tu visible jest odznaczone,bo to obiekt niewidzialny...który służy na nanoszenie go na daną narysowaną scenerię.. Co zrobić,żeby na sceneriach,gdzie są rysowane całe ręcznie i nanoszone na nich par_solid wróg normalnie się obracał i wykrywał krawędzie przeszkody...Dokładnie żeby tak samo się zachowywał jak w sceneriach przy par_wall. a tu jeszcze raz kod wroga jego STEP przy par_wall działa idealnie,ale przy par_solid nie obraca się jak widzi przeszkodę,dostaję trzęsiawki ,a jak widzi krawędź to schodzi niżej:/ problem jest prawdopodobnie w STEPIE wroga,bo jeśli wywaliłem część kodu AI to wróg obracał się widząc przeszkodę dziedziczącą z par_solid,no,ale tylko się obracał nic więcej nie robił..a mi chodzi o takie same zachowanie jak przy par_wall STEP wroga GML ///AI wroga Dino chodzi nerwowo i strzela jak nas zobaczy var stopped; stopped=0; if place_free(x+32,y+3) && image_xscale = 1 { image_xscale = -1; } if place_free(x-32,y+3) && image_xscale = -1 { image_xscale = 1; } image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; //i.direction = point_direction(i.x,i.y,obj_player.x,obj_player.y); //ew i.hspeed=image_xscale*10; jak ma strzelac tylko w poziomie, niezaleznie od wysokosci bohatera strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_wall)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_wall if place_meeting(x+5,y,par_wall) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_wall) && image_xscale = -1 { image_xscale = 1; } //naprawiamy bugujacego sie wroga przy zawracaniu obiekty niewidzialne if place_meeting(x+5,y,par_solid_ghost) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_solid_ghost) && image_xscale = -1 { image_xscale = 1; } //jak to wyżej wywalę tą część kodu,to powraca na obiekcie par_solid zawracanie widząc przeszkodę ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } Proszę o pomoc.. Może przedstawie to na prostym obrazku
  8. To trzeba jeszcze jeden założyć temat...już ci Vader pisałem,gdzie z żalami i pretensjami masz składać swoją petycje...
  9. I am vader , ANtY nikt was o zdanie nie prosił! załóżcie sobie osobne forum na jakiekolwiek uwagi i krytyki...tam możecie wylewać swoje żale i pretensje do użytkowników tego forum.
  10. Podmieniłem...teraz to idzie wróg tylko w jedną stronę w lewo i tym razem próbuje w miejscu iść dalej w lewo jak widzi przeszkodę z par_solid..no nic to nie dało modyfikacja kodu...
  11. kt1117 no właśnie tak zrobiłem podmieniłem kod,i teraz jest tak,że wróg ucieka sobie szybko w drugą stronę i jak napotka przeszkodę,to stoi w miejscu,ja do niego podejde strzela..śmiesznie to wygląda,wtedy się nie obracał ale szedł jakby w miejscu,a teraz to tak jest,że idzie szybko w danym kierunku nawet jak mnie nie widzi napotyka przeszkodę z par_solid,i nie zawraca,ale odwraca się do niej plecami i sobie stoi wróg;) to jest ta różnica.
  12. Fajna gra..koncepcja.. Koniecznie popracuj nad grafika
  13. kt1117 no właśnie teraz,to wróg zobaczy przeszkodę dziedziczącą z par_solid no to stoi w miejscu nie obraca się,może się wstydzi;) no nie działa to. tylko z par_wall obiekty działają na krawędziach ładnie się obraca jak widzi krawędź i przeszkodę dziedziczącą z par_wall
  14. Dziękuje teraz działa jak należy;) zatrzymuje się i strzela;) w końcu;) kt1117 mam jeszcze jeden mały problem,bo mam obiekty dziedziczące no i np mam obj par_wall i tu nie ma problemu na krawędzi wróg się obraca jak jest też przeszkoda,która z tym dziedziczy też się obraca..natomiast już przy obiekcie par_solid mam problem..bo jak nałożę par_solid na daną scenerie to jak jest krawędź to on dalej idzie,a jak jest przeszkoda z par_solid to się nie obraca tylko dostaje trzęsiawki..
  15. kt117 zrobiłem dokładnie tak;) step wroga GML ///AI wroga Dino chodzi nerwowo i strzela jak nas zobaczy var stopped; stopped=0; if (stopped) hspd=0; if place_free(x+32,y+3) && image_xscale = 1 { image_xscale = -1; } if place_free(x-32,y+3) && image_xscale = -1 { image_xscale = 1; } image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; //i.direction = point_direction(i.x,i.y,obj_player.x,obj_player.y); //ew i.hspeed=image_xscale*10; jak ma strzelac tylko w poziomie, niezaleznie od wysokosci bohatera strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_wall)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu if place_meeting(x+5,y,par_wall ) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_wall) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } Bez zmian ,dalej dziad łazi i strzela zamiast stać i strzelać;)
  16. Dzięki;) zaraz sprawdzę;) to chyba w create ma być GML var stopped; stopped=0; dobra to tak to daje teraz: GML if distance_to_object(obj_player)<90 { var stopped; stopped=0; a to już nie wiem,w którym dokładnie miejscu mam umieścić GML if (stopped) hspd=0;
  17. hspd=0; dałem już po if distance_to_object(obj_player)<90 { hspd=0; ale to nic nie daje,nadal jak wróg mnie widzi to idzie w moją stronę i strzela,zamiast się zatrzymać i strzelać..
  18. kt117 Tutaj jest cały step mojego wroga,oraz parenta jakiego ma GML ///AI wroga Dino chodzi nerwowo i strzela jak nas zobaczy if place_free(x+32,y+3) && image_xscale = 1 { image_xscale = -1; } if place_free(x-32,y+3) && image_xscale = -1 { image_xscale = 1; } image_angle = direction; if distance_to_object(obj_player)<90 { if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; //i.direction = point_direction(i.x,i.y,obj_player.x,obj_player.y); //ew i.hspeed=image_xscale*10; jak ma strzelac tylko w poziomie, niezaleznie od wysokosci bohatera strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_wall)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu if place_meeting(x+5,y,par_wall ) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_wall) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } tak mam parenta z wrogiem o to kod parenta;) par_entity CREATE GML ///Ustawienia g = 1; weight = 1; multiG = 1; f = 1; multiF = 1; vF = false; hp = 999999999; maxHp = 999999999; vspd = 0; vspdB = 0; hspd = 0; hspdB = 0; inAir = false; inWater = false; END step GML ///Fizyka if bbox_left+sign(hspd) < 0 || bbox_right+sign(hspd) >= room_width { hspd = 0; x = clamp(x,x-bbox_left,room_width-1-(bbox_right-x)); } if unstick(4) > 8 { instance_destroy(); } hspd += hspdB; for(i=0;i<abs(hspd);i++) { if solid_place(x+sign(hspd),y) { if solid_place(x+sign(hspd),y-1) || inAir == true { if solid_place(x+sign(hspd),y-2) || inAir == true { hspd = 0; } else { x += sign(hspd); y -= 2; hspd -= sign(hspd)/2; } } else { x += sign(hspd); y -= 1; hspd -= sign(hspd)/3; } } else { x += sign(hspd); if inAir == false && !solid_place(x,y+1) && solid_place(x,y+2) { y += 1; } else if inAir == false && !solid_place(x,y+2) && solid_place(x,y+3) { if !solid_place(x,y+1) { y += 1; } if !solid_place(x,y+1) { y += 1; } } } } hspd -= hspdB; hspdB = 0; if inWater == false { //Tarcie if hspd > 0 { hspd = max(0,hspd-f*multiF); } else if hspd < 0 { hspd = min(0,hspd+f*multiF); } //Wertykalne tarcie if vF == true { if vspd > 0 { vspd = max(0,vspd-f*multiF); } else if vspd < 0 { vspd = min(0,vspd+f*multiF); } } //Grawitacja vspd += g*multiG; } else { //Podwodne tarcie hspd = lerp(hspd,0,.1); if abs(hspd) < .2 { hspd = 0; } vspd = lerp(vspd,0,.1); if abs(vspd) < .2 { vspd = 0; } } multiF = 1; multiG = 1; inAir = true; vspd += vspdB; for(i=0;i<abs(vspd);i+=1) { if solid_place(x,y+sign(vspd)) { if vspd > 0 { var slope = getSlopeInclination(); if slope <= -2 && slope >= -8 { x -= 1; hspd -= 1; i -= 1; } else if slope >= 2 && slope <= 8 { x += 1; hspd += 1; i -= 1; } else { vspd = 0; inAir = false; } } else { vspd = 0; } } else { y += sign(vspd); } } vspd -= vspdB; vspdB = 0; if inWater != place_meeting(x,y-sprite_height/3,obj_water) { inWater = !inWater; if inWater == true { vspd /= 2; hspd /= 2; } }
  19. No i działa;) jak należy dziękuje kt117;) a.powiedz mi co zrobić,żeby wróg w momencie jak zobaczy bohatera nie zwalniał,tylko się zatrzymał i strzelał do niego...bo próbowałem z speed=0 ale coś nie wychodzi...
  20. Zrobiłem dokładnie tak wywaliłem tą całą linijkę if alarm[0] = -1 alarm[0] = room_speed * 0.2; strzał ustawiłem z powrotem na 0 ale to nic nie daje,raz tylko wróg strzela jak mnie widzi,a potem już wcale nie strzela.
  21. Kurcze co robię nie tak,że ten wróg nie chcę normalnie strzelać,tylko strzela jak z serią z karabinu:/
  22. Cygnus

    strony z tłami

    Wpisz w wyszukiwarce background for games i tyle. Ale najlepiej jak sam narysujesz sobie tlo przynajmniej bedzie Twoje;-)
  23. Spokojnie zadbam o optymalizacje bez paniki;-)
×
×
  • Dodaj nową pozycję...