Как установить правильное положение камеры?
#1

Здравствуйте, вот столкнулся со следующей проблемой, пытаюсь сделать положение камеры и чтобы она смотрела перед домом, вот начертил кое что:



где D = дом, Pos = координаты куда смотрит камера. Координаты камеры и того куда она смотрит (LookAt), почти одинаковые. Сама проблема в том, что если дом расположен горизонтально, камера смотрит вправо, вместо того чтобы смотреть вперед.

Как можно сделать чтобы камера смотрела в нужное направление? (т.е. вперед) независимо от того как расположен дом. Заранее спасибо за помощь.

--- --- ---
В коде, в LookAt я изменяю координату x, это из-за этого разворачивает.
Сам вопрос: как сделать так, чтобы независимо от угла дома, от координат дома, камера смотрела вперед а не в бок или еще куда-либо.
Reply
#2

Картинка конечно обездвижила)) смотрел 5 минут, но так ничего не понял

Попробуй объяснить еще понятнее, в чем проблема..
Reply
#3

ммм ... узнать координаты входа/выхода (или же 3D текста/пикапа входа/выхода), далее присвоить их к камере, отдалить на нужно расстояние и развернуть камеру на 360 градусов (последние уже на усмотрение, я не знаю каким местом поворачивается у вас игрок,выходя из дома )
Reply
#4

Quote:
Originally Posted by devil77771
Посмотреть сообщение
Картинка конечно обездвижила)) смотрел 5 минут, но так ничего не понял

Попробуй объяснить еще понятнее, в чем проблема..
В обоих случаях на картинке, позиция камеры стоит вправо, т.е. сама камера смотрит вправо, а нужно чтобы она смотрела перед собой (перед домом, в 1-ом варианте нормально, во втором поворачивается все равно вправо).

Quote:
Originally Posted by ZAM
Посмотреть сообщение
ммм ... узнать координаты входа/выхода (или же 3D текста/пикапа входа/выхода), далее присвоить их к камере, отдалить на нужно расстояние и развернуть камеру на 360 градусов (последние уже на усмотрение, я не знаю каким местом поворачивается у вас игрок,выходя из дома )
Это я как раз и сделал,
PHP код:
SetPlayerCameraPos(p,x,y,z+1); 
Где x,y,z = координаты пикапа входа в дом. А в LookAt стоят те же координаты. Но смотрит не туда, куда надо.

p.s. Обновил первый пост.
Reply
#5

пардон, не вникал в ответы предшественников, но по сути есть идея

если при выходе указывается z-andel, то значение z-andel + 180град = поворот камеры с показом дома
Reply
#6

Допустим, что у вас указан угол поворота игрока спиной к дому (Z_Angle).
Тогда для того, чтобы повернуть игрока лицом к дому, нужно сделать одно несложное действие:
pawn Код:
new Float:tmp_float = Z_Angle + 180;
SetPlayerFacingAngle(playerid, tmp_float > 360 ? (tmp_float - 360) : tmp_float);
Reply
#7

Нет, смотрите, мне нужно не самого игрока повернуть, а саму камеру:
pawn Код:
SetPlayerCameraPos(playerid,x,y,z); // тут x,y,z = координаты пикапа дома (вход в дом)
SetPlayerCameraLookAt(playerid,x,y,z);
И нужно ее развернуть таким образом, чтобы вид камеры был от пикапа и вперед.
Reply
#8

SetCameraBehindPlayer(playerid);
Reply
#9

Quote:
Originally Posted by XemyL
Посмотреть сообщение
SetCameraBehindPlayer(playerid);
Прежде чем давать бесполезные советы учите матчасть, функция которую вы так усердно пытаетесь предложить возвращает камеру к игроку, а человеку нужно установить камеру.
Поэтому прежде чем оставлять полезные сообщения внимательно читайте то что просят и то что делают функции!
Reply
#10

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Прежде чем давать бесполезные советы учите матчасть, функция которую вы так усердно пытаетесь предложить возвращает камеру к игроку, а человеку нужно установить камеру.
Поэтому прежде чем оставлять полезные сообщения внимательно читайте то что просят и то что делают функции!
Господи, он ясно говорит, что направление игрока у него нормально установлено, а эта функция установит камеру за спину игрока в нужном направлении и не надо мучиться с координатами -_-
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)