Skocz do zawartości

Przenikanie przez podłogę przy lądowaniu


Rekomendowane odpowiedzi

Witam. Robię platformówkę i mam taki problem. Zrobiłem już prawie cały ruch platformowy (nawet wchodzenie pod górkę mi wyszło :D ), ale czasami pojawia się problem przy lądowaniu.

 

Gdy postać podskoczy i nie ma nic nad głową to wszystko jest w porządku. Skecze i opada z powrotem na platformę.

Ale gdy nad głową mam skrzynkę od której bohater ma się odbić (wyrżnąć łbem) to czasami przy lądowaniu nagle pojawia się pod platformą. Nawet nie przenika przez nią tylko staje na niej i nagle jest pod nią. Dzieje się tak gdy skrzynka jest bardzo nisko (tuż nad głową przy skoku).

 

Kolizja platformy z bohaterem:

with(crash)
{
if vspeed>0 and not place_free(x,y+vspeed) then move_contact(270)
vspeed=0
}

 

Kolizja skrzynki z bohaterem:

if(crash.plask=1)
{
  instance_destroy()
}
else if(crash.vspeed>0&&crash.atak=0)
{
  if(keyboard_check(vk_up))
  crash.vspeed=-17
  else
  crash.vspeed=-10
   
  if(crash.super_skok=2)
  crash.super_skok=1
}
else if(crash.vspeed<0||vspeed>0)
{
  crash.vspeed=-crash.vspeed/5
}

instance_destroy()

 

Ważny jest tu chyba tylko fragment

else if(crash.vspeed<0||vspeed>0)
{
  crash.vspeed=-crash.vspeed/5
}

bo to on odpowiada za wyrżnięcie głową od dołu.

 

Skok bohatera:

if(not place_free(x,y+4)&&plask=0&&po_plask=0)
{
if(place_free(x,y-30)||(kucas=0&&czolg=0&&slizg=0))
vspeed=-15
}

 

 

 

Jeżeli do udzielenia mi pomocy potrzebujecie jeszcze jakiegoś kodu to oczywiście wkleję, ale wydaje mi sie że tylko te 3 fragmenty się liczą.

 

Wydaje mi się że ten nagły "teleport" z platformy -> pod platformę ma związek z funkcją move_contact(270)

 

Jeżeli to ma jakieś znaczenie to platforma i skrzynka są solidne, a bohater nie.

 

 

EDIT:

Udało się. Ja jakoś tak mam, że męczę się parę godzin a jak napisze temat to mi rozwiązanie samo przychodzi :P

Zamiast move_contact(270) zastosowałem move_contact_solid(270,vspeed) ^.^

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...