C++ - SFML - pohyb lopty,pohyb PC bloku a kolizia

Programovacie jazyky, rady, poradňa...
sliziky
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 223
Registrovaný: 29 júl 2012, 13:22

C++ - SFML - pohyb lopty,pohyb PC bloku a kolizia

Príspevok od používateľa sliziky »

Zdravim,pustil som sa do SFML ,zacinam tak zlahka a rozhodol som sa ze spravim hru ,ktoru samozrejme vsetci pozname. Jedna lopta, napravo aj nalavo nazvyme to "blok" ,jeden ovlada clovek ,druhy PC.Ak lopta prejde za jeden z tychto blokov tak sa zvysi skore tomu druhemo hracovi.Este sa len do toho dostavam,takisto aj do C++ takze moc s triedami este robit nechcem,nejake funkcie by sa tu hodili ale zatial ich riesit nebudem.1) Pohyb lopty - zobral som to jednoduchou cestou,ak narazi hore alebo dole tak len zmenim jej pohyb

Kód: Vybrať všetko

pohybKruhY=-pohybKruhY
,avsak chcel by som to trochu vylepsit ,hlavne pri naraze do bloku ,kedy by tam mala byt zahrnuta uz aj nejaka fyzika .
2) Pohyb PC bloku - toto som tiez zobral jednoducho ,ale nie uplne optimalne , robil som to asi tak ze

Kód: Vybrať všetko

ak je poziciaKruhuY > poziciaBlokuY :
    posun blok dole
ak je poziciaKruhuY < poziciaBlokuY:
    posun blok hore
Problem je asi v tom ze (asi) vzdy mi chyti tuto lopticku,nemam to este vyskusane kvoli tomu ze nemam spravenu koliziu
3) Detekcia kolizice - toto je hlavný problém,keďže neviem ako zistit ,kedy sa tieto 2 objekty (sprite) zrazia
Vďaka za každú radu
Prikladam aj zdrojovy kod a obrazok pozadia a bloku.

//autoeditácia príspevku (02 Máj 2016, 17:23)
Ani kod z ich stranky nejako nefunguje :?

Kód: Vybrať všetko

sf::FloatRect boxLeft = blockSpriteLeft.getGlobalBounds();
sf::FloatRect boxRight = blockSpriteRight.getGlobalBounds();
sf::FloatRect gula = kruh.getGlobalBounds();
if (boxLeft.intersects(gula)){
			cout << "Collision " << endl;
		}
Nic mi nevypisuje ..
Prílohy
2dgame.rar
(64.58 KiB) 118 stiahnutí
Napísať odpoveď