Войти
ПрограммированиеПодсказкиГрафика

Поворот камеры по перемещению мыши.

Автор:

Я, когда начинал программировать игры от первого лица, не имея доступа в Интернет, долго бился над функцией Mouse look. В итоге я нашёл, как мне кажется, наиболее оптимальный вариант.

В каждом кадре мы проверяем расстояние от положения курсора до центра экрана по каждой оси (X и Y), поворачиваем камеру, а потом ставим курсор в центр.

...
void UpdateApp()
{
 UINT cx = GetSystemMetrics(SM_CXSCREEN)/2;
 UINT cy  = GetSystemMetrics(SM_CYSCREEN)/2;
 POINT p;
 GetCursorPos(&p);
 ...
 Camera.RotateX((cy - p.y)*sens*0.01f);
 Camera.RotateY((p.x - cx)*sens*0.01f); // Поворачиваем камеру
 ...
 SetCursorPos(cx,cy);
}

Это всё работает при условии, что функция поворота камеры принимает значение угла в градусах. Для случая в радианах несложно подкорректировать код.

#камера

26 марта 2006