Представим ситуацию. Я подошел к актеру, нажал на F(это пример) и камера сдвинулась так, что бы видно было только лицо и руки актера. Натолкните, пожалуйста, на решения проблемы.
Вид для печати
Представим ситуацию. Я подошел к актеру, нажал на F(это пример) и камера сдвинулась так, что бы видно было только лицо и руки актера. Натолкните, пожалуйста, на решения проблемы.
Проверка расстояния до актёра + InterpolateCameraPos/InterpolateCameraLookAt?
Если актёры всегда на месте стоят и знания тригонометрии не позволяют, можно координаты вручную подобрать легко.
Может будет проще через GetActorPos/GetPlayerPos? Камера смотрит в центр актера и чуть вперед актера даже если я поставлю -10, -20, -30.
Код HTML:GetActorPos(Actor[1], a_x, a_y, a_z);
GetPlayerPos(playerid, p_x, p_y, p_z);
InterpolateCameraPos(playerid, p_x, p_y, p_z, a_x, a_y, a_z, 1000);
InterpolateCameraLookAt(playerid, p_x, p_y, p_z, a_x, a_y-50, a_z, 1000);
http://imgur.com/RFbuGU5
Поменял..
- - - Добавлено - - -
a_y-180, a_z+10
не поставлю y - смотрит влево.
Ну так подбери правильные смещения для координат и будет тебе счастье.
И прямо в игре играйся с координатамиPHP код:
CMD:cam(playerid, params[])
{
new
Float:cam_pos_x,
Float:cam_pos_y,
Float:cam_pos_z;
sscanf(params, "p<,>F(0.0)F(0.0)F(0.0)", cam_pos_x, cam_pos_y, cam_pos_z);
GetActorPos(Actor[1], a_x, a_y, a_z);
GetPlayerPos(playerid, p_x, p_y, p_z);
InterpolateCameraPos(playerid, p_x, p_y, p_z, a_x, a_y, a_z, 1000);
InterpolateCameraLookAt(playerid, p_x, p_y, p_z, a_x+cam_pos_x, a_y+cam_pos_y, a_z+cam_pos_z, 1000);
}
Попробуем поиграться.
UPD:не добился нужного результата
Есть еще варианты?
Что не так сделал? Help...Код HTML:stock CameraToActor
(playerid, Float:px, Float:py, Float:pz, Float:ax, Float:ay, Float:az, Float:angle,time = 1000)
{
new
Float:fy,
Float:fz;
fy = ay - floatsin(angle, degrees);
fz = az + floatcos(angle, degrees);
InterpolateCameraPos(playerid, px, py, pz, ax, ay, az, time);
InterpolateCameraLookAt(playerid, px, py, pz, ax, ay-fy, az+fz, time);
return true;
}