Jump to content

návod [**] Rychlost vozidla


Lukasz

Recommended Posts

  • Globální moderátor

vzhledem k tomu, že to dává nereálné rychlosti, tak by se sem hodila i fce na reálnou rychlost. Chceš si ji udělat nebo si to mám udělat sám? :)

Link to comment
Share on other sites

  • Hlavní moderátor

vzhledem k tomu, že to dává nereálné rychlosti, tak by se sem hodila i fce na reálnou rychlost. Chceš si ji udělat nebo si to mám udělat sám? :)

Vozidla se v GTA pohybují nereálnou rychlostí a vynásobením tímto číslem se můžeme alespoň přiblížit k reálným. Pro každé vozidlo je toto číslo jiné, tudíž se používá hodnota okolo 180 jako takové univerzální.

...

Link to comment
Share on other sites

  • Globální moderátor

Hip, on 12 May 2016 - 19:59, said:snapback.png

vzhledem k tomu, že to dává nereálné rychlosti, tak by se sem hodila i fce na reálnou rychlost. Chceš si ji udělat nebo si to mám udělat sám?  :)

Lukasz said

Vozidla se v GTA pohybují nereálnou rychlostí a vynásobením tímto číslem se můžeme alespoň přiblížit k reálným. Pro každé vozidlo je toto číslo jiné, tudíž se používá hodnota okolo 180 jako takové univerzální.

 

...

 

 

 

 

GetVehicleVelocity(vehicleid, vx, vy, vz);

 

Evidentně vrací jakési divné hodnoty. Jestliže odhadneme jak veliký je na souřadné ose jeden metr, tak zjistíme reálnou rychlost.

Link to comment
Share on other sites

  • Globální moderátor

GetVehicleVelocity(vehicleid, vx, vy, vz);

 

Evidentně vrací jakési divné hodnoty. Jestliže odhadneme jak veliký je na souřadné ose jeden metr, tak zjistíme reálnou rychlost.

 

to ano, ale pro každé vozidlo ukazuje údajně jiné. Vlastní fcí se tento defect odstraní

Link to comment
Share on other sites

Číslo cca 180 (používají se i 181.5, 181 a obdobná čísla) se zjistilo z výpočtu ujeté dráhy in-game za jednotky času a následným dopočítáváním. Pro každé vozidlo tedy existuje jiné číslo, ale právě přibližně 180 s mírnými odchylkami vyhovuje.

 

Taky si musíš uvědomit rozdíl mezi vlastní funkcí a GetVehicleVelocity. Ta tvoje vlastní funkce by vracela průměrnou rychlost za uběhlý čas, kdežto GetVehicleVelocity vrací aktuální rychlost. Která funkce ve výsledku asi bude přesnější, že?

 

Pak tu máme ještě možnost zjišťovat pro každé vozidlo tu "správnou" hodnotu. To je stupidita a ztráta času, ale jestli chceš, tak tam rovnou započítej i rychlost větru a váhu nákladu v kufru, protože to bude zase nepřesné.

Násobením jedním číslem je tedy asi nejjednodušší a dostačujícím řešením.

Link to comment
Share on other sites

  • Globální moderátor

Taky si musíš uvědomit rozdíl mezi vlastní funkcí a GetVehicleVelocity. Ta tvoje vlastní funkce by vracela průměrnou rychlost za uběhlý čas, kdežto GetVehicleVelocity vrací aktuální rychlost. Která funkce ve výsledku asi bude přesnější, že?

 

GetVeihcleVelocity taky závisí na čase. Pokud si uděláš vlastní počítanou za třeba 20ms tak to bude celkem přesné...

forward GetSpeed(vehicleid)
{
     new speed;
     new Float:x1;Float:y1;Float:z1;
     new Float:x2;Float:y2;Float:z2;
     GetVehiclePos(vehicleid,x1,y1,z1);
     SetTimer(GetVehiclePos(vehicleid,x2,y2,z2),20,false);
     speed = floatsqroot((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)*50; //vzdálenost za sekundu
     return speed; //metry za sekundu
}
Link to comment
Share on other sites

Tak znovu, GetVehicleVelocity vrací AKTUÁLNÍ rychlost na osách x, y a z. To tvoje PRŮMĚRNOU. Sice je 20ms velmi krátká doba, ale i tak získáme špatné hodnoty (například při portnutí). Chtělo by to další ošetření (a korekci tvého kódu) a pořád by to nebylo přesné.

 

Bohatě tedy postačí GetVehicleVelocity (o které se nemusíš tolik starat a není tak náročné jako tvoje) pro vrácení přibližné "reálné" hodnoty, která stejně slouží pro zobrazení v nějakém textdrawu (čti for fun).

Link to comment
Share on other sites

Tak znovu, GetVehicleVelocity vrací AKTUÁLNÍ rychlost na osách x, y a z. To tvoje PRŮMĚRNOU. Sice je 20ms velmi krátká doba, ale i tak získáme špatné hodnoty (například při portnutí). Chtělo by to další ošetření (a korekci tvého kódu) a pořád by to nebylo přesné.

 

Bohatě tedy postačí GetVehicleVelocity (o které se nemusíš tolik starat a není tak náročné jako tvoje) pro vrácení přibližné "reálné" hodnoty, která stejně slouží pro zobrazení v nějakém textdrawu (čti for fun).

Akorat co je aktualni rychlost ? Z definice: derivace funkce v bode, ovsem derivace funkce v bode je limita dvou rozdilnych bodu jdouci k nekonecnu. Hlavni problem proc hodnota z Velocity prohlasujeme za nerealna jsou ten, ze jsme zvykli merit rychlost v jednotkach vzdalenost/cas. Ovsem Velocity vraci prave jejich derivaci (aktualni) rychlosti v bode. To je ten duvod proc z toho tezko vybouchas nejake realne hodnoty.

Link to comment
Share on other sites

  • Globální moderátor

Akorat co je aktualni rychlost ? Z definice: derivace funkce v bode, ovsem derivace funkce v bode je limita dvou rozdilnych bodu jdouci k nekonecnu. Hlavni problem proc hodnota z Velocity prohlasujeme za nerealna jsou ten, ze jsme zvykli merit rychlost v jednotkach vzdalenost/cas. Ovsem Velocity vraci prave jejich derivaci (aktualni) rychlosti v bode. To je ten duvod proc z toho tezko vybouchas nejake realne hodnoty.

 

jo tak tohle to vrací. Děkuji.

 

 

 

---

 

 

Mimochodem, pořád to moje háže lepší, reálnější čísla. I kdyby jsi tam hodil 10ms pro ještě větší přesnost a aktualizoval třeba každou sekundu, tak to bude IMHO lepší.

Link to comment
Share on other sites

  • Globální moderátor

A taky o dost narocnejsi :)

 

btw uz asi trikrat jsem tu psal, co to vraci

tak asi až od atomase jsem to pochopil :d promiň

 

- záleží jak se použije

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...