Avatar
Grospitsch
Člen
Avatar
Grospitsch:

Ahoj,
snažím se vytvořit jednoduchou RPG 2D hru. Bohužel jsem přišel na takový menší problém, který nevím jak vyřešit. Jde o kolizi obrázků s dalším obrázkem. Přímo na formu mám vytvořené 2 obrázky přes drawImage. Už mám vytvořený i pohyb postavy atd. Bohužel ale mám pozici obrázků přes point a tady nastává ten problém. Aby proběhla srážka těch dvou obrázků musím dojít přesně na ten point kde je vykreslený obrázek. Nejde to udělat tak, aby byl ten obrázek nějak označený např. rectanglem a potom jestli se dotkne nějaké hrany rectanglu tak proběhne nějaký příkaz ? S podmínkama umím pracovat jen nevím jestli to takto jde udělat.

 
Odpovědět 8.5.2014 12:18
Avatar
Odpovídá na Grospitsch
Luboš Běhounek (Satik):

pokud mas kazdy objekt jako rectangle, tak muzes pouzit metodu
Intersect
http://msdn.microsoft.com/…ary/fdh5beb9(v=vs.110).aspx

Nahoru Odpovědět 8.5.2014 12:28
:)
Avatar
Grospitsch
Člen
Avatar
Grospitsch:

Zatím mám každý objekt jako image. Jak se dá převést obrázek načtený přes FromFile převést na rectangle ? Bohužel moc zkušeností s tím nemám teprve se učím.

 
Nahoru Odpovědět 8.5.2014 12:31
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Grospitsch
Theodor Johnson:

http://stackoverflow.com/…-environment

tím získáš velikost obrázku a vytvoříš podle ní Rectangle

Nahoru Odpovědět 8.5.2014 12:39
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Grospitsch
Luboš Běhounek (Satik):

normálně si vytvoříš nový Rect a jako parametry mu dáš X, Y, Width a Height toho obrázku z pictureboxu

Nahoru Odpovědět 8.5.2014 12:42
:)
Avatar
rwn
Člen
Avatar
Odpovídá na Grospitsch
rwn:

Hádám, že kolizi máš nastavenou že nastane za uričé podmínky, tak nestačiloby kolizi odchytávat v dané vzdálenosti před obrázkem? :)
Nebo mě teď ještě napadá použít kontrolku Border a do ní si dát ten obrázek.

Nahoru Odpovědět 8.5.2014 13:33
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Grospitsch
Člen
Avatar
Grospitsch:

Děkuji už mi to funguje tak jak má. Udělal jsem to přes:

if (rect1.IntersectsWith(rect2))
{
     MessageBox.Show("Kolaps");
}
 
Nahoru Odpovědět 8.5.2014 15:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.