Отбросить игрока -
proff116 - 16.06.2013
Как отбросить игрока от точки (x,y) c помощью SetPlayerVelocity. ?
Пробовал через неё, не вышло
PHP код:
stock GetXYInFrontOfPoint(Float:x, Float:y, &Float:x2, &Float:y2, Float:A, Float:distance)
{
x2 = x + (distance * floatsin(-A, degrees));
y2 = y + (distance * floatcos(-A, degrees));
}
Понял что нужно найти угол относительно двух точек, но так и не получилось
Re: Отбросить игрока -
Stepashka - 16.06.2013
В определенном направлении или в любом?
Re: Отбросить игрока -
proff116 - 16.06.2013
да, в определенном
Re: Отбросить игрока -
proff116 - 16.06.2013
Известна координата откуда нужно откинуть
Re: Отбросить игрока -
Richard_Gere - 17.06.2013
Я раньше в OnPlayerTakeDamage откидывал так, может приспособите под себя
pawn Код:
new Float:X, Float:Y, Float:Z, Float:pAng;
GetPlayerFacingAngle(issuerid, pAng);
GetPlayerVelocity(playerid, X, Y, Z);
SetPlayerVelocity(playerid, X + (floatsin(-pAng, degrees) * 0.1), Y + (floatcos(pAng, degrees) * 0.1) , Z+0.05);
Re: Отбросить игрока -
proff116 - 17.06.2013
Да, спасибо. Знаю этот метод. Как раз таки пытался найти угол под эти операции, нахожу ,по видимому, не верно
Re: Отбросить игрока -
Alexander_Petrov - 17.06.2013
Что именно не работает?
Re: Отбросить игрока -
proff116 - 17.06.2013
PHP код:
new Float:X, Float:Y, Float:Z, Float:A;
A = 180-atan2(POS[1][0]-POS[0][0], POS[1][1]-POS[0][1]);
GetPlayerVelocity(i, X, Y, Z);
SetPlayerVelocity(i, X + (floatsin(-A, degrees) * 4.0), Y + (floatcos(A, degrees) * 4.0) , Z+1.0);
То притягивает, то отталкивает не так как надо (в сторону). Проще говоря, взялся за не свое
Re: Отбросить игрока -
proff116 - 17.06.2013
А вот нашел правильное нахождение угла
PHP код:
#define fclamp360(%0) %0 += (%0 >= 360.0) ? -360.0 : ((%0 < 0.0) ? 360.0 : 0.0)
stock ReturnZAngleToPoint(playerid, Float:x, Float:y)
{
new Float:P[4];
GetPlayerPos(playerid,P[0],P[1],P[2]);
P[3] = (180.0 - atan2(floatsub(P[0],x),floatsub(P[1],y)));
fclamp360(P[3]);
return P[3];
}
Re: Отбросить игрока -
proff116 - 17.06.2013
Всё, всё отлично работает