Üdv, ebben a tutorialban számítgatunk egy kicsit.
Nem kezdoknek írom de lehet ok is megértik.
Vegyük eloször az olyan függvényeket amik biztosan kellenek:
GetPlayerPos - Játékos pozíciójának a lekérdezése
GetPlayerFacingAngle (GetVehicleZAngle ha jármuben) - Nézet lekérdezése
floatsin - lebegopontos szám szinuszának kiszámítása a megadott módszerrel
floatcos - lebegopontos szám koszinuszának kiszámítása a megadott módszerrel
Egyszeru a dolog. Létrehozunk 4 változót. X,Y,Z pozícióhoz, és a nézethez.
new Float:x, Float:y, Float:z, Float:angle;
Majd lekérdezzük:
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,angle);
Persze ha jármuben akkor a GetVehicleZAngle-t kell használni.
Végül kiszámoljuk:
x+=(floatsin(-angle,degrees)); //a nézet változójának az ellentettjét kell alkalmazni, és a degrees módszerrel kell számolni
y+=(floatcos(-angle,degrees)); //És az x,y változóhoz hozzá kell a kijött eredményeket adni
Ez kb nagyon közel van a játékoshoz. Ha messzebb akarod kiszámítani akkor szorzunk egy kicsit:
x+=(2*floatsin(-angle,degrees));
y+=(2*floatcos(-angle,degrees));
Ez 2szer akkora távolságra van. Minél nagyobbal szorzod annál messzebb.
A mögötti pozíció gyakorlatilag ugyanez csak itt kivonunk:
x-=(floatsin(-angle,degrees));
y-=(floatcos(-angle,degrees));
Fontos: az x,y számnak lesz annyi az értéke amennyit kiszámoltál, láthatod hogy ott van az =.
Lehet valakinek jól jön....