Кстати, насчет игры. Сегодня под вечер или завтра выложим информацию о процессе разработки. Теперь насчет камеры. Ну, прежде всего, камера - это только обозначение. На самом же деле это смещение каждого объекта на карте. Само движение камеры у нас выглядит следующим образом:
Code
if (vFCam.Up) and (vCam.Y + cCamSpeed < 0) then begin
vCam.Y := vCam.Y + cCamSpeed;
end;
Это движение камеры вверх, взятое из редактора. Здесь:
vFCam.Up - флаг, отвечающий за то, что нажата кнопка W, то есть, кнопка, которая отвечает за движение камеры вверх.
vCam.Y - координаты камеры, то есть, показатель, на сколько смещаеются все объекты на карте.
cCamSpeed - скорость перемещения камеры.
Само рисование карты происходит следующим образом:
Code
for i := -vCam.Y div 50+1 to -vCam.Y div 50+(tvPole.Height div 50)+2 do begin
for j := -vCam.X div 50+1 to -vCam.X div 50+(tvPole.Width div 50)+2 do begin
vObshee.Canvas.Draw(vCam.X + j * 50 - 50, vCam.Y + i * 50 - 50, aTextures[aPole.TexNum[j, i]]);
Ну, здесь происходит, также, проверка на то, какие текстуры нужно рисовать. Рисуются только текстуры, находящиеся на экране. tvPole - это то, на чем рисуется карта. Его ширина и высота и являются в данном случае тем самым 'экраном', на котором рисуются текстуры.
Ну, код сложен, но разобраться можно. Если будут вопросы, задавай.
Кстати, вот вызов движения камеры не из редактора, а из игры (код взят из первой части Galaxy Boom):
Code
if (vPlayer.Y <= 250 - vCamY) and (vCamY < 0) then begin
vCamY := vCamY + vPlayer.Speed;
end;