collision detection
· Sep 28, 2005, 4:44 PM
#12611
znaci htio bih napraviti nekakvu pong igru da mi bude c++ prvijenac... sve je to divno i krasno, ali mene zanima kako da detektiram collisione one loptice sa pravokutnicima od kojih bi se trebala odbijati...
napravio sam algoritam za detekciju collisiona dvaju pravokutnika(tj. sad ga dovrsavam), no prilicno je primitivan.
znaci samo mi treba teoretski malo pojasniti kako da napravim te collisione, zapravo kako ih napraviti i opcenito kada radim sa tijelima koja nisu cetverokuti.
to je za detekciju collisiona gornje i collisiona donje stranice
znaci ob.cup - true je kada postoji kolizija s objektom zid na gornjoj stranici cetverokuta
ob.down - kada je na donjoj stranici kolizija
trebalo bi radit po svoj logici
ali ne radi god damit
ok sad donja radi savrseno a gornja ne radi dobro s ovim kodom
napravio sam algoritam za detekciju collisiona dvaju pravokutnika(tj. sad ga dovrsavam), no prilicno je primitivan.
znaci samo mi treba teoretski malo pojasniti kako da napravim te collisione, zapravo kako ih napraviti i opcenito kada radim sa tijelima koja nisu cetverokuti.
//kolizija
//gore
if((ob.xr >= zid.x && ob.xr <= zid.xr) || (ob.x >= zid.x && ob.x <= zid.xr))
{
if(ob.y >= zid.yd && ob.y <= zid.y)
{
ob.cup = true;
}
}
//dole
if((ob.xr >= zid.x && ob.xr <= zid.xr) || (ob.x >= zid.x && ob.x <= zid.xr))
{
if(ob.yd <= zid.y)
{
ob.cdown = true;
}
}
///ispravljanje
if(ob.cup == true)
{
ob.y-=0.1;
ob.cup = false;
}
if(ob.cdown == true)
{
ob.y+=0.1;
ob.cdown = false;
}to je za detekciju collisiona gornje i collisiona donje stranice
znaci ob.cup - true je kada postoji kolizija s objektom zid na gornjoj stranici cetverokuta
ob.down - kada je na donjoj stranici kolizija
trebalo bi radit po svoj logici
ali ne radi god damit
ok sad donja radi savrseno a gornja ne radi dobro s ovim kodom
//kolizija
//gore
if((ob.xr >= zid.x && ob.xr <= zid.xr) || (ob.x >= zid.x && ob.x <= zid.xr))
{
if(ob.y >= zid.yd && ob.y <= zid.yd)
{
ob.cup = true;
}
}
//dole
if((ob.xr >= zid.x && ob.xr <= zid.xr) || (ob.x >= zid.x && ob.x <= zid.xr))
{
if(ob.yd <= zid.y)
{
ob.cdown = true;
}
}
///ispravljanje
if(ob.cup == true)
{
ob.y-=1;
ob.cup = false;
}
if(ob.cdown == true)
{
ob.y+=0.01;
ob.cdown = false;
}
