Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

Просмотр удаленного объекта   Найти похожие ветки 

 
Cash ©   (2004-09-28 17:23) [0]

Обрисуем сабж.
- Есть у нас карта, большая карта, такая, что в экран не влезает :).
- Есть некий объект, который находится за пределами экрана.
? Какнибудь можно взять изображение карты с этим объектом и поместить
  на экран. Вроде видео съемки.
! Если можно, то ссылки, примеры, и т.д.


 
cyborg ©   (2004-09-29 09:27) [1]

Можно - нарисуй на экране кусок карты и этот объект.


 
Omar2002   (2004-09-30 10:21) [2]

Сделай так же как и с обычным- видимым игровым полем. Выведи еще один такой кусок экрана, только меньших размеров(естественно с другими координатами) Конечно это уменьшит скорость, но все зависит от размера этого просмотрового окна.


 
BaDeVlad   (2004-09-30 11:39) [3]

Хоть бы тип игры указал! Если это "сотовая" карта, то все очень просто. Каждому типу "клетки" карты будет соответствовать точка определенного цвета на миникарте. Координаты объектов накладываешь тоже точками определенных цветов...


 
Colt1978   (2004-09-30 13:43) [4]

эта карта у тебя что представляет ?


 
Cash ©   (2004-09-30 15:17) [5]

BaDeVlad: 2D, предназначена для сети, возможно аркада, хотя не тянет.
 Но речь идет не о миникарте, ее я уже написал, а о объекте, за которым следит камера и отображает куда мне надо.
Colt1978: "STD" набор спрайтов, отрисовывающихся только на видимой части экрана.
А кусок для перерисовки размерами ~[120x120]. Не много, но достаточно.


 
Colt1978   (2004-09-30 15:32) [6]

может глупость спрашу, а что тебе мешает камеру перемещать ?


 
Cash ©   (2004-09-30 18:37) [7]

Дык смотри.
- Есть спрайт плеера, во время движения камера следит за ним.
- А остановился плеер, можно камеру самолично ворочить.
- Так вот тут и вступает в действие маленькое окошко с окружением плеера.
  Чтоб не зашиб никто, пока по карте гуляет.


 
Cash ©   (2004-09-30 18:40) [8]

Да вот еще.
 Прорисовку этого окошка я наметил делать только, если спрайт плеера, будучи остановленным, скрывался из видимой области экрана.


 
П7   (2004-09-30 22:17) [9]

Это смотря на чём пишешь. Поэтому конкретно сказать не могу, но так или иначе можно отрисовать (отрендерить) нужный тебе кусок уровня в отдельный спрайт (текстуру), а затем выводить...

В чём проблема-то заключается?


 
Cash ©   (2004-10-01 19:15) [10]

П7 Пишу на Omega 7.
А проблема в том, что Вся карта прописана так:
За ненадобностью остального кода опускаю....

TBackGroundSprite = Class(TSprite)
 Private
   FChips: array of array of integer; // Само сабой динамический
 Public
   Procedure Draw; override;
end;

Procedure TBackGroundSprite.Draw;
var
 a,b,i,j,mi,mj: integer;
begin
if not MapSized then exit;
 j:=round(x) div FXPixels;
 i:=round(y) div FYPixels;
 if (FXSize*FXPixels) > Application.MainForm.Width then
   mj:=j+(Application.MainForm.Width div FXPixels)
 else mj:=FXSize-1;
 if (FYSize*FYPixels) > Application.MainForm.Height then
   mi:=i+(Application.MainForm.Height div FYPixels)
 else mi:=FYSize-1;
 for a:=i to mi do begin
   for b:=j to mj do begin
     image.Draw(round(X)+(FXpixels*b),round(Y)+(FYPixels*a),FChips[a,b]);
   end;
 end;
end;

Из этого мы видим, что на отрисовку поступает только видимая часть экрана.

Проц. Draw имеет параметры (X,Y,DrawIndex: integer;).
А из этого мы видим, что FChips является только носителем индекса данной клетки.

Но когда я создал проц. для отрисовки куска по координатам и последующей передачи его в качестве параметра проц. {Ниф.} ничего не вышло, и не выходдит.


 
П7   (2004-10-04 08:57) [11]

Я не знаю, что такое Omega 7, но предположу, что это клон или надстройка DirectX.
Посему вот что нужно сделать:
1. Создаёшь отдельную поверхность для выводимого куска
2. Выставляешь глобальные координаты смещения карты относительно экрана равными точки начала вывода куска
3. выводишь карту на созданную поверхность учитывая размер экрана, который в данном случае равен не разрешению экрана, а размеру нужного тебе куска

Всё, с на этой поверхности то, что тебя интересует.
Затем выводишь эту поверхность на экран, в нужном тебе месте. Перерисовывать её можно только в случае необходимости, что сэкономит ресурсы.

ВотЪ! (:


 
Cash ©   (2004-10-04 14:42) [12]

П7 Правильно предположил.
Я тут покопался в его сырцах и вот, что нашел:
- если это о чем то говорит, то у спрайта под Омегой есть св-во
 Image: IDirect3DTexture8;
- При отрисовке спрайта, само собой, вызывается метод
 FSprite.Draw(Self.Image, @LocRect, @SVector, @RVector, Rotation, @Vector, D3DColor_RGBA(Red, Green, Blue, Alpha));
где:
- FSprite: ID3DXSprite;
- Self.Image = Image: IDirect3DTexture8;
- Vector, SVector, RVector: TD3DXVector2;
Вобщем все так, а следовательно можно предположить, что Омега
может быть применена при разработке 3D игры.


 
П7   (2004-10-05 10:26) [13]

Ну так ты реализовал вывод куска или как? Если нет, но очень хочется, то можешь мне на мыло скинуть вот что:
1. Эту самую -А-мегу 7 (:
2. Исходниксвоего проекта или работающий исходник того, что тебе нужно изменить
3. Ридми какое-нибудь или описалого того, что нужно поточнее...

ВотЪ! (:


 
Cash ©   (2004-10-05 11:13) [14]

П7 Не выходит.
При отладке смотрю ширину и высоту возвращаемого куска, а Debuger показывает [0,0]. т. е. скин спрайта после загрузки из источника TPicture хранится в св-ве Image (см. [12]), а Picture: TPicture (источник) опустошается чтоли.

Как смогу, вышлю все в полном комплекте.


 
П7   (2004-10-05 11:31) [15]

А зафигом тебе TPicture?
Как ты его создаёшь?


 
Cash ©   (2004-10-05 13:39) [16]

Прошу прощения за не полную демонстрацию кода.
П7: Pictupe используется (по моему) в качестве некоего буфера или средства загрузки изображений с файлов, записано в св-вах класса TImageItem (аналог TPictureCollectionItem у DelphiX).


 
П7   (2004-10-05 14:04) [17]

Ну, вероятно это некорректная работа с графикой, а не невозможность применения описанного мной метода решения твоей проблемы. Т.е. ты хочешь сказать, что ты не можешь в этой Омеге манипулировать спрайтами? Тебе ведь нужно динамически нарисовать спрайт и всё...


 
Cash ©   (2004-10-05 17:54) [18]

Точно. Ну вот держи Омегу. ~1.2 Mb
Там внутри есть исходники и Туториал.


 
П7   (2004-10-05 18:08) [19]

Омегу я уже качнул.
Вот тебе такое предложение: почему бы не сделать заранее спрайтов-подложек с изображением местности, на которые выводить необходимые тебе объекты? (:



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
1-1103098374
kingdom
2004-12-15 11:12
2005.01.16
Как найти пересечение фигур


9-1094706205
Wasp
2004-09-09 09:03
2005.01.16
Как сделать след от объекта


14-1104237136
Чеширский_Кот
2004-12-28 15:32
2005.01.16
Присоветуйте хорошую утилиту, плиз...


1-1104516664
Cheguevara
2004-12-31 21:11
2005.01.16
Как создать компоненту в координатах клика мыши?


6-1098890522
CRACKISH
2004-10-27 19:22
2005.01.16
TTcpServer и TTcpServer из вкладки Internet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский