Тема: Vivo
Показать сообщение отдельно
Старый 11.03.2012, 16:47   #215
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Подмигивание Ответ: Vivo

Сообщение от Nikich Посмотреть сообщение
ну не знаю, ничего о камерах в 2Д в блитце я не слышал. Может есть сторонние библиотеки, но я ими не пользуюсь.
Ты же не хочешь сказать, что ждешь готовой команды "СоздайтеМнеКамеруВ2Д()"?

Это реализуется двумя-тремя операторами.

Дано:
-блоки, каждый имеет свои координаты относительно точки отсчета (0,0). Эти координаты изменяться НЕ БУДУТ.
-игрок, который тоже имеет координаты, относительно точки отсчета (0,0).
-воображаемая камера которая должна:
--висеть над тем местом, которое задано ее координатами (относительно точки отсчета (0,0))
--показывать соответствующие блоки

Координаты игрока будут совпадать с координатами камеры, в случае жесткой привязки (тогда игрок будет всегда по центру экрана)
Или немного плавать относительно координат камеры, если нужна плавная смена направления (камера "летает" за игроком).

Заводим две переменные: camera_x, camera_y

Все, осталось последнее - модифицировать то место программы, которое отвечает за рисование блоков на экране.
Ты ведь не рисуешь все блоки подряд? Ты наверняка рисуешь только те, которые должны быть видны на экране.
Вроде:
If block.x>0 and block.x<640 then
	if block.y>0 and block.y<480 then
		drawimage img_block, block.x, block.y
	endif
endif
Надо изменить это условие примерно так:
If block.x>camera_x and block.x<(camera_x+640) then
	if block.y>camera_y and block.y<(camera_y+480) then
		drawimage img_block, block.x-camera_x, block.y-camera_y
	endif
endif
Не так уж и сложно.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (11.03.2012)