|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Fri Feb 01, 2008 7:07 pm Post subject: Delphi, sienu(textuuru) necaurejamiiba!! |
|
Tātad, Man ir vajadzīga palīdzība ar Delphi(OpenGL). Mums tika uzdots uzdevums uztaisīt sienas necaurejamas (pielikšu failu ar sourci), kā to vislabāk izdarīt????
Code: |
if X>2 then X:=X-0.01;
if Z>2 then Z:=Z-0.01;
|
Labāku par šito sūdu neēsmu izdomājis!
http://yy.lv/download.php?f=101449
Paldies! :)
P.S atvainojos ka rakstu par ātru un nesakarīgi, jo es to daru tur ko man to uzdeva |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 01, 2008 7:24 pm Post subject: |
|
Un kas tieši tev nestrādā vai nesanāk kā gribi? |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Feb 01, 2008 7:29 pm Post subject: |
|
stabils variants ir pāriet uz iepriekšējo pozīciju pie sadursmes ar sienu..
daudz labāks variants ir atsevišķi testēt x un y ātrumus -
ja (x+x_ātrums,y+y_ātrums) neatrodas sienā, tad x = x+x_ātrums;y = y+y_ātrums
ja nē, tad līdzīgi testēt:
(x+x_ātrums,y) un (x,y+y_ātrums), un, ja visi saduras, tad nekustēties!
btw, y asi pamaini ar z manos tekstos, ja tā esi pieradis strādāt.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Fri Feb 01, 2008 7:44 pm Post subject: |
|
bubu protams ka nesanāk kā gribu, man vajag, lai apstājas pie sienas, nevis kad es eju kilometru no sienas un vēlāk apstājos viņš mani pa 0.01 punktiņam lēnām noliktu mani pie sienas
snake5 izklausās lādzīgi, tikai man smadzenes par mazu, lai izdomātu kodu. Varu izdomāt kaut ko līdzīgu tikai ar kļūdām :/, ja nebūtu par grūtu varētu vienu piemēriņu uz 1 sienas |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 01, 2008 7:53 pm Post subject: |
|
Nē, stabils variants būtu:
ja pozīcija+ātrums iet cauri sienai, tad aprēķināt tuvāko distanci līdz sienai un nolikt tur objektu, citādi parvietoties par ātrums vienībām.
P.S. ātrums un pozīcija ir vektori. _________________ long time; /* know C */ |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Feb 01, 2008 8:29 pm Post subject: |
|
nu tur viss kods bija paskaidrots vārdiski..
bet kodu es pateikt nevarēšu priekš delphi..
nezinu, kas tev tur kā glabājas..
vienīgi paskaidrot..
x - pozīcijas vektora x koordināte
y(z) - ... y(z) koordināte
x_ātrums - ātruma vektora x
y_ātrums(z_ātrums) - ātruma vektora y(z) _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Fri Feb 01, 2008 8:58 pm Post subject: |
|
Tagad tik pamanīju, ka tas fails neiet tāka vajag, atveriet to ar WinRAR |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Feb 01, 2008 9:16 pm Post subject: |
|
^suny^ wrote: | Tagad tik pamanīju, ka tas fails neiet tāka vajag, atveriet to ar WinRAR |
viņš tāpat neies..
tas exe fails saka, ka trūkst kautkādu failu un galā - black screen..
gadījumā neesi failu nosaukumus piesaistījis konkrētai mapei? (pilnie, ne relatīvie failu nosaukumi, piemēram "tex.bmp" vietā ieliki "C:/MyProjects/WallGo/tex.bmp") _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Fri Feb 01, 2008 9:25 pm Post subject: |
|
snake5 viss ir daudz grūtāk nekā tu domāji
parasti vienu no tiem .txt failiem , viņu vārdu, no°maini un map.txt
vienkārši es tur biju mēģinājis likt visādus vertices un faces agrāk, vnk samaini nmap2.txt uz map.txt un viss aizies |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Feb 01, 2008 9:50 pm Post subject: |
|
nu jā, tagad viss ok..
hmm, 16 fps.. daudz.. tāds ir limits?
nu anyway, tu pats gan jau proti delphi labāk kā es, tā kā atļauju to manu ideju ielikt tev! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Fri Feb 01, 2008 9:52 pm Post subject: |
|
snake5 wrote: |
ja (x+x_ātrums,y+y_ātrums) neatrodas sienā, tad x = x+x_ātrums;y = y+y_ātrums
ja nē, tad līdzīgi testēt |
Emmm, es nevaru saprast ko tas līdzīgi testēt nozīmē ?
Code: |
if (X+Hand.Pos.X, Z+Hand.Pos.Z) not Face then
X := X+Hand.Pos.X;
Z := Z+Hand.Pos.Z;
else
// ...
|
Vai pareizi uzrakstīju?? un ko tas par testēšanu nozīmē :/ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 01, 2008 10:05 pm Post subject: |
|
Tev tas vispār kompilējas, ko pats uzrakstīji?
Vienkāršākajā gadījumā raksti aptuveni šādi:
Code: | next_pozīcija_x := x + ātrums_x;
next_pozīcija_y := y + ātrums_y;
if next_pozīcija NEATRODAS sienā then
begin
x := next_pozīcija_x;
y := next_pozīcija_y;
end; |
To ko rakstīt if izteiksmē, zini tikai tu. Man nav ne jausmas kā tu nosaki kolīziju ar sienu. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Feb 01, 2008 10:27 pm Post subject: |
|
šeit prasās pēc bboxiem..
ray - plane collision ir kas grūtāks.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
^suny^
Joined: 30 Nov 2007 Posts: 57
|
Posted: Tue Feb 05, 2008 10:32 pm Post subject: |
|
Hmm, man nesanāknemaz tā kā tu teici, visu laiku prasīja BOOLEAN, bet es nesaprotu kāpēc, jo piemērā kādu mums tur iedeva nebija BOOLEAN tipa.
Biju pamēģinājis nedaudz savādāk pārveidot šo te, un sanāca tā
Code: |
procedure TfrmGL.Collision;
var
NextXPos : glFloat;
NextZPos : glFloat;
I : integer;
begin
NextXPos := X+MoveSpeed;
NextZPos := Z+Movespeed;
if NextXPos <= Face[i].V1 or Face[i].V2 or Face[i].V3 or Face[i].V4
if NextZPos <= Face[i].V1 or Face[i].V2 or Face[i].V3 or Face[i].V4
then
begin
X := X+NextXPos;
Z := Z+NextZPos;
end;
end;
|
Tā rāda vienu kļūdu ka vajadzētu būt THEN, pirmā if'a rindas beigās.
Sākumārakstīju and, bet kad ierakstu tur and vienalga prasa THEN, jau bija apriebies. NU ieliku es tur to THEN, sapriecājos, kļūdu nebija, palaižu programmu, !neiet, rakstu šeit forumā postu.
Ko darīt?
Ā, un vēl man ir 1 unikālais veids kā aizsmērēt tās sienas, vēlāk, rīt, iepostošu to veidu! Bet jāizdomā pašam savs veids.
Gaidu racionālus risinājumus |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Tue Feb 05, 2008 10:59 pm Post subject: |
|
Racionāls risinājums būtu sākt ar paskāla pamatiem un iemācīties paskāla sintaksi.
if izteiksme pierakstās šādā veidā:
Code: | if X then Y [else Z]; |
X ir izteiksme, kas dod boolean tipa vērtību, Y un Z ir patvaļīgas komandas. else Z daļa ir opcionāla.
boolean tipa vērtību, piemēram, dod izteiksmes, kurās ir salīdzināšanas: A > B vai A != B, utt... A un B šeit var būt, piemēram, jebkādas skaitliskas vērtības.
Paskālā vēl ir dažādi operatori - and, or, not. Ar tiem var apvienot vairākas loģiskās izteiksmes:
A and B - rezultāts būs true tad un tikai tad, ja gan A, gan B būs true
A or B - rezultāts būs false tad un tikai tad, ja gan A, gan B būs false
not A - rezultāts būs pretējs A vērtībai (true->false, false->true)
Tagad par tavu mega if izteiksmi:
1) pirmām kārtām if izteiksmē ir sintaktiska kļūda. Ja raksta divus if pēc kārtas (kā tev īsti neisaku rakstīt, jo viegli saputroties), tad sintakse ir šāda:
Code: | if X1 then if X2 then Y; |
2) otrām kārtām tev tur ir bezjēdzīga loģiskā izteiksme (tas X manā piemērā): A <= B or C or D .. - izteiksme būs true, ja A būs mazāks/vienāds par B VAI C būs true (jeb nenulle vērtība) VAI D būs true (nenulle).
Tātad, ja Face[i].V3 saturēs skaitli 4, tad if izpildīsies, jo izteiksmes vērtība būs true - neatkarīgi no citiem mainīgajiem.
Ja tu gribi vienu skaitli salīdzināt ar daudziem citiem skaitļiem, tad tev tie visi būs jāsalīdzina ar to konkrēto, nevis tikai vienu reizi. Skat: A < B and/or A < C and/or A < D ... and/or ir jāliek atkarībā, kā vajag izpildīties šiem nosacījumiem - vai nu visiem jābūt patiesiem vienlaicīgi, vai arī vismaz vienam no tiem.
Palasi paskāla pamatus. Delphi helps arī ir laba vieta, kur lasīt tos. |
|
Back to top |
|
|
|
|
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
|