Jump to content

[Delphi] Ruch w grach RPG - Problem


Lavi

Recommended Posts

Chce zrobić taki ruch by po jednym naciśnięciu klawsza postać poruszyła się sama o 32 pixele z określoną i stała predkością.
Próbowałem coś zrobić ale nie wychodzi. Oto co wymyśliłem:

[code=Delphi] procedure Move(nr,dir:byte);
begin
PL[nr].TEMP := 1000; VY[oY[YVHZzH[ZCB5DU2Ł3#Ć7Ś&&ż7pś%drŁG'VSźźŃĄ4)A1mt%I // zapisanie obecnego kierunku (nieważne)
Repeat
if PLKSTHK[HoY[YH]HYHŚV7FbGŚR&FĆV&Vv66RFźźŹÓŃążności od kierunku
1: Dec(PL[nr].X);
2: DeĘKJNB[ĘK
NB
[ĘVćCFV2ś%5DU2FVŚŹ4(%ĄA1mt9%4źźŃąŃcji
PL[nr].TEMP := 1000; // zeruj opuźnienie
eBTŃUÓSTBXĘKST
NZ[ĆćVćPbś%2FVś%ŁźźŃ4(źź94(A1mtMQALŃĄ/ jeśli nie ma więcej kroków to
begin
PL[nr].MOSH[N]Z
Y]oJCBKSSHHN]]ZYg67Pś%5DU2W7FrĆ7Ś&R&ż7rććWvćRVćCVFś%5DU2ŚVćC\0 [/code]

Niech mi ktoś pomoże to przerobić. Postać zapiernicza jak [b]nie normalna a licznik TEMP zmiejsza sie tylko o 1.
Bawiłem się z tym ale nic nie daje. Może ma ktoś gotowy algorytm do takiej rzeczy. POMOCY

Z góry dzieki tongue.gif

Link to comment
Share on other sites

[code=Delphi] if PL[nr].TEMP = PL[nr].Lvl then#zgwjHŁ8,\"
Ę;'i)zhkr)dŁ^X7Ś+r'źŁć-jz9b)ł;ś)O.zLC,*hZzX.zęl0yo'zZa[[KT [/code] [b]pozatym.STEPS = 0 then // jeśli nie ma więcej kroków to
begin
PL[nr].MOVING := false; // ustaw postuj (nieważne)
PL[nr].ANIM := 1; // ustaw postaw w miejscu
//PL[nr].STEPS = 0; // ustaw liczbe kroków na 0 (nieważne)
end;[/syntax:c06b88a207]
to daj za pętlą, będzie lepiej(oczywiscie usuń if)

"Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek

Link to comment
Share on other sites

Ja proponuje dać zmienną pomocniczą, która określa ile jeszcze tych mini przejść zostało i co takie przejście dodawać trochę do pozycji X,Y.
I jak ktoś wciśnie przycisk do ruchu to przypisujesz do niej np. 20 albo 50 i potem sprawdzasz czy ta zmienna jest > 0 jeśli tak to przesuwasz o pare px w danej osii i zmniejszasz po trochu tą zmienną pomocniczą.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link to comment
Share on other sites

Ok zmieniłem i teraz jest lepiej.
Ale petla przelatuje bez efektu tak jakby jej wogóle nie było nie wiem czemu ???

[delphi][/delphi]

Nie wiem czemu ale pętla tylko raz przechodzi tak jakby warunki zakończenia pętli były by spełnione a nie są.
Przecież STEPS jest równe 32. Nie rozumiem tego ni w ząb. POMOCY
Link to comment
Share on other sites

Dzieki - już działa tylko mam jeszcze jeden problem jak to zrobić żeby wmiare jak wzrasta poziom postaci porusza się ona szybciej.

Kod wygląda tak:

[code=Delphi]
procedure MoveChr;
var nr : byte;
begin
for nr := 1 to BYKSSHYH[BY[BXĘKbś%DT\"FV&Vv66Rś%%I4(ĄA1mt`4(ĄA1mtY,4);
3: Inc(PL[nr].X,4);
4: Inc(PL[nr].Y,
NB[BXĘKTĘNBKSTŁ3bś%5DU2RFV2ś%A1mtMQALŃĄ%9ĄA1mt9%44(4(PL[nr].STEPS = 0 then
begin
PL[nr].MOVING := falNBKSSHHNB[B[B[B [/code]

Jeśli by ktoś na coś wpadł niech da znać.

Z góry dzięki tongue.gif

Link to comment
Share on other sites

Wpakuj sobie do klasy, rekordu postaci zmienną określająca prędkość postaci i co poziom możesz ją zwiększać. Tylko w tym momencie musisz obliczać dodatkowo ile przejść musisz wykonać by wyszło razem te 32px czy ile tam chcesz. Bo jak nie zmienisz ilości kroków to wraz ze wzrostem prędkości będzie Ci się wiecej postać przesuwać.

Tylko jeszcze jedna rzecz: pamiętaj, że jak postać znacznie przyśpieszy to animacja może nie pasować ładnie do rzeczywistości więc przydało by się ew. zrobić możliwość zmiany prędkości animacji.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link to comment
Share on other sites

Dzieki już nawet sobie poradziłem sam. Poprzestawiałem to i owo.
Teraz jest super ale dzięki za pomoc z tym małym błędem.

Raczej już nie bede miał pytań do tego tematu.

Raczej tongue.gif

Dzienk's FOR ALL

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...