Making an actor face the player - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (
https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (
https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Making an actor face the player (
/showthread.php?tid=573806)
Making an actor face the player -
Sellize - 10.05.2015
How can I make an actor face the player's direction?
Re: Making an actor face the player -
MicroD - 10.05.2015
http://forum.sa-mp.com/showpost.php?...62&postcount=9
https://sampwiki.blast.hk/wiki/SetActorFacingAngle
Re: Making an actor face the player -
MP2 - 10.05.2015
pawn Код:
stock Float:SetPlayerFacePlayer(playerid, faceplayerid)
{
new Float:Px, Float:Py, Float: Pa;
GetPlayerPos(playerid, Px, Py, Pa);
new Float:fpX, Float:fpY, Float: fpZ;
GetPlayerPos(faceplayerid, fpX, fpY, fpZ);
Pa = floatabs(atan((fpY-Py)/(fpX-Px)));
if(fpX <= Px && fpY >= Py) Pa = floatsub(180, Pa);
else if(fpX < Px && fpY < Py) Pa = floatadd(Pa, 180);
else if(fpX >= Px && fpY <= Py) Pa = floatsub(360.0, Pa);
Pa = floatsub(Pa, 90.0);
if(Pa >= 360.0) Pa = floatsub(Pa, 360.0);
if(!IsPlayerInAnyVehicle(playerid)) SetPlayerFacingAngle(playerid, Pa);
else SetVehicleZAngle(GetPlayerVehicleID(playerid), Pa);
return Pa;
}
Not made by me.
Alter it to work with actors.
Re: Making an actor face the player -
Sellize - 10.05.2015
Quote:
Originally Posted by MP2
pawn Код:
stock Float:SetPlayerFacePlayer(playerid, faceplayerid) { new Float:Px, Float:Py, Float: Pa; GetPlayerPos(playerid, Px, Py, Pa); new Float:fpX, Float:fpY, Float: fpZ; GetPlayerPos(faceplayerid, fpX, fpY, fpZ); Pa = floatabs(atan((fpY-Py)/(fpX-Px))); if(fpX <= Px && fpY >= Py) Pa = floatsub(180, Pa); else if(fpX < Px && fpY < Py) Pa = floatadd(Pa, 180); else if(fpX >= Px && fpY <= Py) Pa = floatsub(360.0, Pa); Pa = floatsub(Pa, 90.0); if(Pa >= 360.0) Pa = floatsub(Pa, 360.0); if(!IsPlayerInAnyVehicle(playerid)) SetPlayerFacingAngle(playerid, Pa); else SetVehicleZAngle(GetPlayerVehicleID(playerid), Pa); return Pa; }
Not made by me.
Alter it to work with actors.
|
Done, thanks.
If anyone needs it
Код:
stock SetActorFacePlayer(actorid, faceplayerid)
{
new Float:Px, Float:Py, Float: Pa;
GetActorPos(actorid, Px, Py, Pa);
new Float:fpX, Float:fpY, Float: fpZ;
GetPlayerPos(faceplayerid, fpX, fpY, fpZ);
Pa = floatabs(atan((fpY-Py)/(fpX-Px)));
if(fpX <= Px && fpY >= Py) Pa = floatsub(180, Pa);
else if(fpX < Px && fpY < Py) Pa = floatadd(Pa, 180);
else if(fpX >= Px && fpY <= Py) Pa = floatsub(360.0, Pa);
Pa = floatsub(Pa, 90.0);
if(Pa >= 360.0) Pa = floatsub(Pa, 360.0);
SetActorFacingAngle(actorid, Pa);
}
Re: Making an actor face the player -
MicroD - 10.05.2015
Код:
SetActorToFacePlayer(actorid, targetid) {
new
Float: pX,
Float: pY,
Float: tX,
Float: tY
;
return
GetPlayerPos(targetid, tX, tY, Float: targetid) &&
GetActorPos(actorid, pX, pY, Float: targetid) &&
SetActorFacingAngle(actorid, -atan2(tX - pX, tY - pY))
;
}
By Nero_3D