Szerző Téma: Rotation lekérése kordináta alapján.  (Megtekintve 831 alkalommal)

Nem elérhető Dr1

Rotation lekérése kordináta alapján.
« Dátum: 2018. január 07. - 23:08:27 »
0 Show voters
Sziasztok!
 
Szeretnék érdeklődni milyen egyszerűbb megoldásokat ismertek arra, hogy két kordináta alapján meglehessen állapítani merre kell forduljon az object. 
 
Példa.: 0.0,0.0,0.0, és 2.0, 1.0, 0.0 kordinátánál az object arra nézzen az aelső kordinátától amerre a második van. 

Nem elérhető Ben

  • 1754
  • Ben apó
    • Profil megtekintése
Rotation lekérése kordináta alapján.
« Válasz #1 Dátum: 2018. január 08. - 10:38:23 »
+3 Show voters

Nem elérhető gbr333

  • 670
    • Profil megtekintése
Rotation lekérése kordináta alapján.
« Válasz #2 Dátum: 2018. január 08. - 10:44:12 »
+1 Show voters

stock SetObjectFaceCoords3D(iObject, Float: fX, Float: fY, Float: fZ, Float: fRollOffset = 0.0, Float: fPitchOffset = 0.0, Float: fYawOffset = 0.0) {
new
   Float: fOX,
   Float: fOY,
   Float: fOZ,
   Float: fPitch
;
GetObjectPos(iObject, fOX, fOY, fOZ);
fPitch = floatsqroot(floatpower(fX - fOX, 2.0) + floatpower(fY - fOY, 2.0));
fPitch = floatabs(atan2(fPitch, fZ - fOZ));
fZ = atan2(fY - fOY, fX - fOX) - 90.0; // Yaw
SetObjectRot(iObject, fRollOffset, fPitch + fPitchOffset, fZ + fYawOffset);
}


Használat:
 


iArrowObject = CreateObject(1318, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0);
public OnPlayerUpdate(playerid) {
new
   Float: fX,
   Float: fY,
   Float: fZ
;
GetPlayerPos(playerid, fX, fY, fZ);
SetObjectFaceCoords3D(iArrowObject, fX, fY, fZ, 0.0, 180.0, 90.0);
return 1;
}

Nem elérhető Dr1

Rotation lekérése kordináta alapján.
« Válasz #3 Dátum: 2018. január 08. - 11:56:59 »
0 Show voters
Köszönöm a válaszokat!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal