Skocz do zawartości

Pogromca_kodu77

Użytkownicy
  • Postów

    57
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Pogromca_kodu77

  1. Zdecydowanie czytelniej...zgadzam się z Tobą... Ciężko do pewnych nawyków się przyzwyczaić i cały czas nad tym pracuję. Wyłapałem w inny sposób błąd.A mianowicie co się dzieje kiedy bohater kiedy zejdzie z drabiny dotknie stałego podłoża/gruntu.. A mianowicie był przez ułamek sekundy zatrzymany w miejscu tak jakby ktoś go trzymał. Ten kod naprawia ten problem if __vsign == 1 && !wPowietrzu { drabina = false; } Ok udało Mi się też zlokalizować przyczynę dlaczego nie mogłem ustawić sprita idealnie jak schodzi po drabinie. Temat do zamknięcia.. Przyczyną była zmienna vspd musiałem zwiększyć dystans skoku do góry i już jest ok..
  2. Dobra... W końcu podgarnołem. Bohater teraz nie spada z drabiny. Ale zostały Mi dwie rzeczy do zrobienia. 1. Bohater jak jest przy drabinie po naciśnięciu przycisku dół chwyta się,ale nie górnej części drabiny tylko nad drabiną.. Dziwnie to wygląda.Mam sprita 128x128 pewnie przez to.. 2. Obj_podloze powoduje zblokowanie na ułamek sekundy sprita bohatera który zejdzie z drabiny i dotknie tego podłoża.. Nie wiem moze trzeba dac jakis warunek żeby sprawdzał podłoże? Jak dotknie gracz po zejściu drabiny obj_podloze. Kod teraz wygląda tak Create Zejsciezdrabiny = false; //bohater juz nie spada z drabiny if place_meeting(x,y,par_drabina) && key_check(key.down) { zejsciezdrabiny = true; } if place_meeting(x,y,par_drabina) { zejsciezdrabiny = false; } //bohater kiedy zetknie sie z ziemia //obj_podloze to puszcza drabine if place_meeting(x,y,par_drabina) && drabina = true && place_meeting(x,y+2,obj_podloze) { drabina = false; } if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+1,par_drabina) && czas <= 0 && (key_check(key.up) || zejsciezdrabiny)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie 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-100,par_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } } Czy ktoś z was mógłby Mi pomóc z tymi dwoma wyżej rzeczami? Dziękuję.
  3. W porządku:-) Do kolegi wyżej napisałem. Pogrzebałem troche w kodzie i udało mi się rozwiązać problem ze spadającą drabiną.. Stworzyłem zmienna w create Coś takiego trzymaniesiedrabiny = false; Następnie w Stepie wywaliłem przy drabinie dół i dałem tą zmienną. I w końcu w Stepie dałem żeby zmienna przy drabinie i przycisku dół była false a potem true:-) Nie spada bohater ale jak zejde z drabiny i jestem na dole na solidzie to chwile sprite bohatera jest jakby przez coś trzymany..Mogę nogani przebierać..ale coś go trzyma przez chwile..i w końcu może chodzić i wszystko zaczyna działać..
  4. Jednak moje szczęście nie trwało długo.. Wyzbyłem się platformy którą nakładam na drabinie w celu stałego podłoża aby sprite bohatera nie spadł z górnej krawędzi drabiny. Teraz kiedy jest sama drabina,to w chwili kiedy znajdę się bohaterem na górze drabiny to naciskając przycisk dół to spada bohater. Próbowałem użyć gravity...ale coś źle robię.. Proszę was o pomoc..jak na podstawie wyżej kodu ustawić aby gracz nie spadał z górnej krawędzi drabiny. I naciskając przycisk dół dłużej lub krócej od razu chwytał się górnej krawędzi drabiny.. Dziękuję za każdą pomoc...sugestie..
  5. Dziękuję za sugestie. Problem 1 udało Mi się wczoraj naprawić oraz w połowie Problem 2 W pierwszym przypadku wystarczyło ustawić wartość inną wartość Y z +5 na +1 Podobnie jak w przypadku 2.Tu problem okazał się dość banalny. Wartość y ustawiłem z-32 na -100 Teraz bohater kiedy wejdzie na drabinie to na jej szczycie kończy animacje i zmienia swój stan na sprite stojącego. Tu zostało Mi do ustawienia bohatera w drugą stronę czyli bohater schodzący z drabiny. Otóż..kiedy próbuje zejść bohaterem z drabiny to jego sprite zaczyna schodzić nie od szczytu drabiny tylko o pare punktów wyżej.. Mówiąc wprost i jaśniej..kiedy jestem nad drabiną to w chwili kiedy nacisnę kursor dół to bohater powiniem złapać się górnej krawędzi drabiny.. A teraz on znacznie wyżej łapie się drabiny.. Ciężko Mi to ustawić...siedzę już 2 dzień nad tym. Moje pomysły wyczerpały się... Próbowałem w opcjach roomu zmienić wartość hsp i vsp z -1 na 15. Generalnie to pomogło teraz ekran nie przeskakuje uporczywie jak próbuje zejść po drabinie..Sprite płynnie zmienia swoje położenie...od razu łapie się górnej granicy drabiny. Mimo to te rozwiązanie nie do końca jest dobre,ponieważ mam na planszy ruchome obiekty i teraz te obiekty nie nadążają za graczem. Może jest inny sposób żeby ustawić sprite bohatera jak jest nad drabiną że przy naciśnięciu przycisku dół od razu chwytał górną część drabiny. //Drabina if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+1,par_drabina) && czas <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie 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-100,par_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } }
  6. Dzień dobry wszystkim, Od pewnego czasu borykam się z kilkoma problemami. Mam na myśli drabinę. Korzystałem z różnych samouczków w sieci,ale mimo to nie mogę rozwiązać tych problemów. A teraz jaśniej. Problem 1 Drabina na pozór działa dobrze..Mogę po niej wchodzić i schodzić. Żeby z niej nie spaść użyłem trwałego obiektu który nanoszę na górną krawędź drabiny następnie ten obiekt trwały sparowałem z drabiną i problem powierzchownie rozwiązany. czemu piszę że powierzchownie? Bo jest mały problem...kiedy nacisnę krótko przycisk dół na klawiaturze to mój bohater spada z drabiny na najbliższe podłoże solid ; natomiast kiedy przytrzymam dłużej klawisz dół to schodzi normalnie z drabiny. Nie mam pojęcia jak to naprawić żeby mógł normalnie schodzić bez względu czy nacisnę krótko klawisz dół czy też długo. Problem 2 Nie wiem,czy tu akurat wina jest źle ustawionego sprita bohatera,ale kiedy wejdę już na szczyt drabiny to mimo że już jestem na górze,to jeszcze przez chwilę mój sprite wspina się. Komicznie to wygląda... Próbowałem w ustawieniach spritach zmienić pozycję x i y sprite...ale to nie pomaga.. Problem 3 Mój bohater będąc na drabinie ma możliwość ataku w postaci strzału z pocisku. używam tu dodatkowo sprite ataku na drabinie który w chwili wystrzelenia pocisku pokazuje się. I tu jest mały kłopot...Kiedy wykonam strzał bohaterem na drabinie to za nim pocisk się nie rozbije o cokolwiek to kiedy poruszam lewo prawo bohaterem to zamiast zmienić się sprite bohatera na wchodzącego po drabinie,to pokazuje się przez chwilę jeszcze sprite ataku na drabinie oczywiście źle to wygląda,bo on suwa się góra dół... Tu poniżej kod mojej drabiny. Pomijam większość,żeby nie wklepywać bezsensownie wszystkiego.. obj_bohater Step //Ruch bohaterem if drabina == false { if key_check_pressed(key.jump) && wPowietrzu == false { vspd = -10-sign silaSkoku = 4; if key_check(key.down) && place_meeting(x,y+1,par_objekt_trwaly)//obiekt dziedziczacy z drabina aby bohater nie spadl z drabiny { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } //Drabina if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+5,par_drabina) && czas <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie 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_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } } // animacja bohatera wchodzacego na drabinie i odpoczywajacego if drabina == true { if x == xprevious && y == yprevious { if sprite_index != spr_bohater_odpoczywanadrabinie { sprite_index = spr_bohater_odpoczywanadrabinie; } } else { if sprite_index != spr_bohater_wchodzipodrabinie { sprite_index = spr_bohater_wchodzipodrabinie; } } } ////Bohater atakuje z drabiny if keyboard_check_pressed(ord('X')) && drabina==true && czas == false && place_meeting(x,y,par_drabina) && instance_number(objPocisk) < 3 { czas = 30; atak = 1; with instance_create(x,y,par_ataku) { sprite_index = spr_bohater_strzela_na_drabinie; image_xscale = other.image_xscale; { var box, ID; if image_xscale == -1 box = bbox_left; else box = bbox_right; ID = instance_create(box+image_xscale*-10, y-17, objPocisk); ID.hspeed = image_xscale * 15; } } }
×
×
  • Dodaj nową pozycję...