Ü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....
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
Miért kell az \"angle\" változót minusz elõjellel írni? Nem emlékszem ilyenre matekóráról. Ha már leírást készítesz akkor magyarázd is el, hogy mi miért van és ne csak azt mutasd meg, hogy mi lesz a végén...
KowaZ
Na ez érdekes.
Szerintem(ha van jobb tapasztalatod, ne hallgass rám)
ha hozzáadsz(jobbra)/kivonsz(balra) a FacingAngle-hez valamennyit(mondjuk -180 a balra
esõ területhez), akkor úgy kiszámítható
x+=(floatsin(-angle,degrees));
y+=(floatcos(-angle,degrees));
ezzel a módszerrel.
Lehet nagy baromságot mondtam, bocsi ha nem mûködik, de
szerintem így kéne menjen.
Fizika/Matek 2-es :-[
Akár kivonsz, akár hozzáadsz 180-at, az a játékos háta mögött lesz. :D
90-et kell kivonni/hozzáadni a balra, és jobbra irányokhoz.
Jéé.
Végre megértettem, ez mire jó.
\"Eznélkül úgy nemtudod a játékos kordninátái szerint beállítani a kamerát, mondjuk 10 méterre a játékos elé, úgy, hogy a játékos pontosan a \"képernyõ közepén\" álljon :D\"
[/quote]
Hát nem igazán, de enélkül még csak elé sem tudnád állítani.