Překážky + Gravitace (2D hra) – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Překážky + Gravitace (2D hra) – Delphi – Fórum – Programujte.comPřekážky + Gravitace (2D hra) – Delphi – Fórum – Programujte.com

 

Yohaku0
Návštěvník
12. 10. 2012   #1
-
0
-

Dobrý den,

vytvářít 2D "hru" na Windows, tedy spíše se učím ji tvořit. Ztroskotal jsem ale u gravitace a překážek. Jistě umím udělat čtvereček nebo obrázek ale jakmile by se s daným objektem srazil měl by se zastavit.

Nevíte jak na to?

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
Yohaku0
Návštěvník
12. 10. 2012   #2
-
0
-

Tak už jsem na to kápnul a gravitaci jsem vytvořit Timerem. Ale stále se propadává, takže potřebuju ty překážky...

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
KIIV
~ Moderátor
+43
God of flame
12. 10. 2012   #3
-
0
-

bude to chtit kolizni system.. neco jako prolezeni pres vsechny objekty (nebo jen objekty pobliz danne pozice) a predat ten padajici objekt, aby se dalo porovnat jestli nenastala kolize... to jak je implementovana pak zalezi na tom, jakou presnost kolize chces... sou rychly ze se jen tak nejak odhadne dejme tomu podle stredu a nejake prumerne vzdalenosti hranice objektu a nebo sou presnejsi.. (chtelo by to mrknout na google na detekci kolizi a jak se provadi)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Evzen+2
Návštěvník
12. 10. 2012   #4
-
0
-

Ahoj,

tomu "propadávání" se říká kolize. Zkus zapátrat na internetu a určitě najdeš plno materiálů jak na to.

Ve výsledku jde o to, že kontroluješ, jestli lze pohybující se "čtvereček" umístit na danou pozici, tedy jestli již na dané pozici něco není.

Složitost a náročnost se odvíjí od toho, co vlastně děláš. Pokud budeš mít jednoduchou hru typu hledání min nebo tetris, tak to lze řešit pomocí pole (nebo spíše dvourozměrného pole). U náročnějších se jednotlivé prvky obalují právě třeba čtverečkem nebo jiným zjednodušeným obrazcem a kontroluješ, jestli nedošlo k průniku.

Evžen

Nahlásit jako SPAM
IP: 193.179.183.–
Yohaku0
Návštěvník
12. 10. 2012   #5
-
0
-

Hledal jsem na Googlu, jenže tam jsou jen návody typu DelphiX.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
KIIV
~ Moderátor
+43
God of flame
12. 10. 2012   #6
-
+1
-
Zajímavé

Jaky navody? Chces byt programator? Nebo patlal?

Najdes jak to funguje a naprogramujes to - neni potreba navod: tady napiste i : integer, tady udelejte takovouhle metodu .. takhle si ulozte objekty do pole, tady mate for jak si to cely pekne projit a otestovat jestli nedoslo s aktualnim objektem ke kolizi ... takovehle styl uceni je stejnej jako zadny uceni... (pripadne jako patlani v jave)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yohaku0
Návštěvník
12. 10. 2012   #7
-
0
-

#6 KIIV
Nehledám takovýto styl, přesto přece nevím o všech funkcích, které je na to potřeba. Stále jsem začátečník, a jako začátečník mám prostě s tímto problém.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
KIIV
~ Moderátor
+43
God of flame
12. 10. 2012   #8
-
0
-

tak zkus nastudovat, napis sem analyzu problemu a navrh reseni ktere pouzijes (pripadne co si nepochopil) - aspon se seznamis s necim ve stylu produkcniho programovani :D  (+ jako bonus nahodit odhad casove narocnosti - coz ze zacatku je vetsinou hodne divoke)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yohaku0
Návštěvník
12. 10. 2012   #9
-
0
-

#8 KIIV
Dobrá tedy...

Vytvořit jsem (jak už jsem říkal) timer, který každých 25 milisekund posune hráče o Top+10 a Left+10 (vítr). Napadlo mně, že to celé dám do podmínky podle toho, jestli hráč koliduje se zemí a ostatními pevnými prvky.

Jenže nevím, jak by měla fungovat funkce na zjištění toho, jestli hráč se zemí koliduje, nebo ne.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
KIIV
~ Moderátor
+43
God of flame
12. 10. 2012   #10
-
0
-

no to bys mel teoreticky nastudovat jak sem zminoval .. (napriklad seznam pevnych objektu a u kazdeho metodu na zjisteni kolize a jen to projet - ted uz jen zalezi na tvarech - jak zjistovat ty kolize )

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yohaku0
Návštěvník
12. 10. 2012   #11
-
0
-

#10 KIIV
No dobře, nastudovat... Jenže to jsme zase zpátky u toho. Na internetu jsem nenašel nic, co by nebylo pro DelphiX.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
15. 10. 2012   #12
-
0
-

Máš svého hráče, který je pro jednoduchost buď bod nebo obdélník. A dále máš překážku, která bude obdélník. Kolizi bodu s obdélníkem otestuješ funkcí PtInRect. Kolizi obdélník vs. obdélník otestuješ podmínkou:

if ((hrac.right >= zarazka.left) AND (hrac.left <= zarazka.right) AND (hrac.bottom >= zarazka.top) AND (hrac.top <= zarazka.bottom)) then
Nahlásit jako SPAM
IP: 188.75.135.–
Yohaku0
Návštěvník
15. 10. 2012   #13
-
0
-

#12 liborb
A co když místo bodu chci mít obrázek? Tedy slušnou grafickou postavu? (TImage)

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
Yohaku0
Návštěvník
15. 10. 2012   #14
-
0
-

#12 liborb
A mimo toho, Right a Bottom neexistuje, ne? Tedy alespoň mi to píše chybu.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
liborb
~ Redaktor
+18
Guru
15. 10. 2012   #15
-
0
-

I TImage má nějaké rozměry - je to nějaký obdélník. A right a bottom existují, psal jsem, že je to kolize obdélníku s obdélníkem (TRect).

Nahlásit jako SPAM
IP: 188.75.135.–
Yohaku0
Návštěvník
15. 10. 2012   #16
-
0
-

#15 liborb
Jo, aha. Já myslel že TShape.

Nahlásit jako SPAM
IP: 46.107.247.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
dyžon0
Stálý člen
15. 10. 2012   #17
-
0
-

#16 Yohaku
pozici prave a dolni strany ziskas i sloucenim left a width a top a height objektu.

takze jak pise liborb:
 

if (((hrac.left + hrac.width) >= zarazka.left) and((hrac.top + hrac.height) >= zarazka.top) and ...  

a podobne ...
mozna pro prehlednost muzes vytvorit promenne .. hracvpravo,hracvlevo,hracnahore, hracdole .. pri zmene pozice prepises promenne.

Nahlásit jako SPAM
IP: 90.176.204.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

2d hra — založil BuchtaP

Hra — založil mephi

Hra? — založil johny5

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý