2D-видоискатель на основе плитки / камера

Это не столько вопрос, сколько проверка «туннельного зрения».

Я пытаюсь заставить камеру / окно просмотра работать в roguelike, но я не уверен, что я делаю вещи правильно.

Вот код, который я получил до сих пор:

void Map::moveCamera(int targetx,int targety) {
//size of the map portion shown on-screen
int CAMERA_WIDTH = 80;
int CAMERA_HEIGHT = 43;

int camera_x = 0;
int camera_y = 0;

//new camera coordinates (top-left corner of the screen relative to the map)
int x = targetx - CAMERA_WIDTH / 2;  //coordinates so that the target is at the center of the screen
int y = targety - CAMERA_HEIGHT / 2;

//make sure the camera doesn't see outside the map
if (x < 0){
x = 0;
}
if (y < 0){
y = 0;
}

if (x > map_width - CAMERA_WIDTH - 1) {
x = map_width - CAMERA_WIDTH - 1;
}
if (y > map_height - CAMERA_HEIGHT - 1) {
y = map_height - CAMERA_HEIGHT - 1;

if (x != camera_x or y != camera_y) {
computeFov();
}
camera_x = x;
camera_y = y;
}
}

Теперь, когда я изменяю размер карты, камера застревает в углу, и я не вижу карту!

Может кто-то указать мне верное направление?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]