А
Александр Савичев
Добрый вечер. У меня есть небольшая проблема.
Суть ее заключается в том, что когда я спавню и поворачиваю prop_dynamics на земле - оно поворачивает именно так, как мне необходимо
Однако стоит мне спавнить проп на стене - он поворачивается не так как мне нужно. Он поворачивается по оси z, однако когда он у стены, мне необходимо поворачивать его по оси x. Как поворачивается у меня:
Как поворачиваться должно:
Как это можно реализовать?
На офф форуме подсказали, что нужно использовать TR_GetPlaneNormal и дали ссылку на скалярные вектора, однако я так и не понял, что именно мне необходимо сделать.
Вот мой код поворота prop_dynamic:
Суть ее заключается в том, что когда я спавню и поворачиваю prop_dynamics на земле - оно поворачивает именно так, как мне необходимо
Однако стоит мне спавнить проп на стене - он поворачивается не так как мне нужно. Он поворачивается по оси z, однако когда он у стены, мне необходимо поворачивать его по оси x. Как поворачивается у меня:
Как поворачиваться должно:
Как это можно реализовать?
На офф форуме подсказали, что нужно использовать TR_GetPlaneNormal и дали ссылку на скалярные вектора, однако я так и не понял, что именно мне необходимо сделать.
Вот мой код поворота prop_dynamic:
C-подобный:
bool:TurnEntity(client, Float:angle)
{
decl ent, Float:Angles[3], Float:OldAngles[3], Float:normal[3], String:name[64];
ent = GetClientAimTarget(client, false);
if (IsValidEntity(ent))
{
if (CheckEntNotClient(ent))
{
GetEdictClassname(ent, name, sizeof(name));
GetEntPropVector(ent, Prop_Send, "m_angRotation", OldAngles);
Angles[0] = OldAngles[0];
Angles[1] = OldAngles[1] + angle;
Angles[2] = OldAngles[2];
TeleportEntity(ent, NULL_VECTOR, Angles, NULL_VECTOR);
for (new i=1;i<=MaxClients;i++)
{
if (IsClientConnected(i) && !IsClientObserver(i) && IsPlayerAlive(i))
{
if (IsPlayerStuck(i))
{
PrintToChat(client, "\x04[Props]\x03 Невозможно повернуть проп. Кто-то застрянет.");
TurnEntity(client, -45.0);
return false;
}
}
}
return true;
}
}
return false;
}