dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

2D collision detection
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija
View previous topic :: View next topic  
Author Message
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Sun Feb 10, 2008 12:18 pm    Post subject: 2D collision detection

Ir sekojoša situācija: 2D uz tailiem bāzeta spēle par tanciņiem :)



Mana kolīzija darbojas pēc principa: ja tails, kas ir tankam priekša ir caurejams, tad var braukt uz priekšu.



Taču rodas problēma kad tanciņš stāv pa vidu (ne gluži pa vidu, lielākā tā daļa ir uz vērsta uz caurejamo tailu) 2 tailiem, viens caurejams otrs nē. Rodas situācija kad es varu braukt sienā jo priekšā esošais tails, uz kuru ir vērsta lielākā tanka daļa, ir caurejams...



Neesmu pārliecināts ka izskaidroju sevi skaidri, bet ja kāds būs ko līdzīgu darīji sapratīs...
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Feb 10, 2008 1:58 pm    Post subject:

visprimitiivaak - box-box collisions, pameklee netaa. Viens box buus tancins, otrs - tils
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Sun Feb 10, 2008 2:31 pm    Post subject:

Tavs slengs man ir mazliet nesaprotams...
Pie tam vai box-box kolīzija ir laba ideja tāda tipa aplikācijā?
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Feb 10, 2008 2:58 pm    Post subject:

box-box ir pietiekami vienkāršs, lai būtu ok, un tas laikam arī būs visprecīzākā pārbaude tavam gadījumam.

Dabūt vienu kvadrātu/taisnstūri, kas visciešāk aptver tava tanciņa formu. Un tad salīdzini šo četrstūri ar necaurejamajo kartes blociņu koordinātēm. Tiem pat nevajag to četrstūri glabāt, to koordinātes var easy izrēķināt no kartes pozīcijas. Un taisnstūra sadursmi pret taisnstūri ir ļoti viegli pārbaudīt. Ja nemaldos, tad tāds kods te formuā jau vairākas reizes ir ticis dots. Gūglē arī viegli tādu atrast (meklē aabb collision).
Back to top
View user's profile Send e-mail
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Sun Feb 10, 2008 3:16 pm    Post subject:

Ok, paldies! Tas man aizņems kādu laiku lai apsmadzeņotu jauno informāciju Smile
Back to top
View user's profile Send e-mail
MoKa



Joined: 10 Oct 2007
Posts: 79
Location: Daugavpils

PostPosted: Mon Feb 11, 2008 4:22 pm    Post subject:

ИМХО с массивов лучше не переходить. Между такнками, да тут придётся юзать коллизию (но не факт).
Если у тебя тайлы всегда формы кубика, (нету других размеров), тогда массив это лучший варриант.
Но тут нужна качественная проверка.
Я проверял в таких солучаях по 4 точкам (углы танка). Всё очень просто, т.к. передвижение только в 4 направлениях, так вот, проверяй свободен ли путь для движения в определённом направлении для точек того края который считается передом исходя из предпологаемого направления движения.
Но если будут более сложные формы, или тонкие объекты, тогда Box-Box или Sphere-Line(статичная), было бы весьма удобно, но это уже для более сложных систем построения уровня - чаще не тайловом.
_________________
Текущий Инструментарий: BlitzMax + Xors3D + FastImage + PhysX + sFXe
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Feb 11, 2008 5:05 pm    Post subject:

4 stūru pārbaude būs gandrīz tas pats kas aabb tankam. Īsti nekādas priekšrocības tur neradīsies.
Back to top
View user's profile Send e-mail
spicausis



Joined: 23 Jan 2006
Posts: 85
Location: Teika

PostPosted: Wed Feb 13, 2008 3:02 pm    Post subject:

Skatoties uz uzzīmēto tanciņu šķiet, ka būtu feināk un izskatīsies labāk, ja forma būtu mazliet sarežģītāka un tanciņu definēs divi taisnstūri, viens korpusam, un otrs krān^Wstobram, lai otrajā attēlā redzamais tanks varētu vēl pabraukt kapeiku uz priekšu.
Back to top
View user's profile Visit poster's website
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Fri Feb 15, 2008 2:19 pm    Post subject:

Mazliet pačakarējoties laikam atradu risinājumu savām problēmām :)

Code:

    sum_extents.x = (a.max.x - a.min.x) + (b.max.x - b.min.x);
    sum_extents.y = (a.max.y - a.min.y) + (b.max.y - b.min.y);

   
    double_center_to_center.x = (b.min.x + b.max.x) - (a.min.x + a.max.x);
    double_center_to_center.y = (b.min.y + b.max.y) - (a.min.y + a.max.y);

    return fabsf(double_center_to_center.x) < sum_extents.x &&
           fabsf(double_center_to_center.y) < sum_extents.y;   


P.S. Tanciņš pagāidām ir kāds ir, grafiku taisīšu tad kad viss pārējais darbosies..
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Feb 15, 2008 2:30 pm    Post subject:

ceru, ka tas tev neskaitās AABB collision check kods..
jo to var izdarīt daudz vienkāršāk:
Code:

bool CheckBB(BBOX b1, BBOX b2)
{
return (b1.x1 < b2.x2) && (b1.x2 > b2.x1) &&(b1.y1 < b2.y2) && (b1.y2 > b2.y1);
}

kautkā šitā laikam bija..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Fri Feb 15, 2008 2:36 pm    Post subject:

Varbū mans kods ir mazliet no citas operas bet savu uzdevumu tas pilda Smile
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Feb 15, 2008 2:36 pm    Post subject:

bet vai ātrāk?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Fri Feb 15, 2008 2:42 pm    Post subject:

Droši vien ka nav Smile Bet ar tevis doto piemēru iepriekš ņemoties man sanāca tikai atrast vai punkts pieder plaknei...
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Feb 15, 2008 2:46 pm    Post subject:

nu nez, vajadzētu manam strādāt..
bet ātrāks būs tāpēc, ka..
neveido jaunus mainīgos funkcijas lietošanas laikā
neizpilda funkcijas
un nelieto tik daudz darbības, pietam.. (ja C++), tad, ja kāda no pirmajām nevienādībām starp && ir nepatiesa, nākošās netiek testētas Wink
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Fri Feb 15, 2008 3:12 pm    Post subject:

Nevaru iebraukt kā lai es tagad salīdzinu kartē esošo necaurejamo objektu koordinātes ar tenciņa koorinātēm... Ja es ielikšu ciklu kurš katrreiz pārskatīs visu karti uz sakritībām tas taču būs ļoti lēni? Mad
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group