Witam, tak jak w tytule tematu mam problem z ukośnymi platformami. Mam 4 objekty, -oPlayer (gracz) -oBlock (rodzic dalszych objektów)-oBlock1 (trójkąt prostopadły, który ma kąt prosty przy wierzchołku, który jest po prawej stronie na dole sprite'a, który ma pole 32x32, a dwa kąty najbliższe tego wierzchołka są równej długości(trochę to długie)),- oBlock2 ( to samo, tylko że po lewej stronie na dole). Gracz nie ma problemu z przesuwaniem się po oBlock1, i przesuwa się, tak jak powinien, lecz z oBlock2 gdy oPlayer próbuje po nim przejść, objekt się blokuje i nie potrafi zrobić byle jakiego ruchu w byle jakim kierunku. Jak to naprawić?
Kody oPlayer:
Create:
v=1
max_y=5
Step:
if place_free(x,y+1)
vspeed+=1;
Kolizja z oBlock:
move_contact_solid (270,4)
vspeed = 0
Keyboard <Left>:
yy=0;
ok=0;
while (yy<=max_y&&ok=0)
{
if (place_free(x-v,y-yy))
{
x-=v;
if (!place_free(x,y+1)&&vspeed=0)
y-=yy;
ok=1;
}
}
if(!place_free(x,y+max_y)&&vspeed=0)
move_contact_solid(270,max_y);
Keyboard <Right>:
yy=0;
ok=0;
while(yy<=max_y&&ok=0)
{
if(place_free(x+v,y-yy))
{
x+=v;
if(!place_free(x,y+1)&&vspeed=0)
y-=yy;
ok=1;
}
yy+=1;
}
if(!place_free(x,y+max_y)&&vspeed=0)
move_contact_solid(270,max_y);yy=0;
Press <Up>
if(!place_free(x,y+1))
vspeed=-15;
Kody w oBlock:
Kolizja z oPlayer:
with(oPlayer)
{
if (vspeed>0&&!place_free(x,y+vspeed))
move_contact_solid(270,vspeed);
vspeed=0;
}
W sprite oBlock1 i oBlock2 mam zaznaczone:
-Precise collision checking
-Separate collision mask
oBlock nie ma sprite.
Dziękuję i pozdrawiam