Скроллинг в 2д мире.
Скроллинг в 2д мире. Во многих играх есть передвижение по карте... В очень многих :-) Сейчас я вам расскажу, как это реализовано... А реализовано это у нас очень просто ;) Имеем две переменных - координаты камеры. Допустим, CameraX и CameraY. И имеем еще две координаты - координаты домика. :crazy: Допустим, X и Y. Надо нам сделать так, чтобы при перемещение камеры домик двигался как положено. То есть, двигаем камеру влево - домик вправо, и в итоге выходил за пределы.... Ну а что делать, если координаты камеры 5000, а координаты домика - 5500 ?) Думаю, редко у кого такое расширение стоит ^^ Правильно это выщитывается по простейшей формуле - X - CameraX. то есть, если у нас положение камеры - 5000, а положение домика 5500, то координаты домика на экране 5500 - 5000 = 500 пх. Код:
Graphics 640,480 DrawRect X-CameraX , Y-CameraY,W,H а эта типо самый главный код, выщитывающий положение домика на экране :crazy: Вначале мну не дошло, пока не объяснил JohnK. =) (за что ему респект :-) ) В итоге ко мне постучалса чел, и попросил помочь. А я тутор написал, хотя, это не тутор - а нечто меньшее =))) Мож кому-нибудь потребуется... |
Re: Скроллинг в 2д мире.
Очень доходчиво и наглядно, спасибо )
|
Re: Скроллинг в 2д мире.
Сколько жрут домики ресующиесяза картой по сравнению с теми что на экране?
Имеет смысл делать проверку видимости домика? |
Re: Скроллинг в 2д мире.
Протестил вообще с рисованием "домиков" и без.
С рисованием ~16 . И без ~16. О_о. то есть эти "домики" почти не жрут ... Это при 500. А вот при 50000 "домиков" разница есть. Если скрывать - 75 примерно мс. а елси нет - 145 .... |
Re: Скроллинг в 2д мире.
ну значит при карте больше 500х100 тайтлов есть смысл прятать :)
Есть провереный алгоритм видимости\невидимости? |
Re: Скроллинг в 2д мире.
If X-CameraX < ШиринаЭкрана And Y-CameraY < ВысотаЭкрана then
ага, как раз 50000 получается =) конечно лучше все остальные скрывать =) а показывать только те, что на экране =) |
Re: Скроллинг в 2д мире.
ЖЖоте.
В зоне ли видемости проверяется перво наперво, и если НЕТ то вомногих случаю дальнейшее обновление прекрощяется! |
Re: Скроллинг в 2д мире.
Цитата:
Еще один пример - PoH. Если игрок хотя бы раз увидел монтсра - то он уже обновляется всегда. |
Re: Скроллинг в 2д мире.
хм... а я использую SetOrigin() и SetViewPort()
|
Re: Скроллинг в 2д мире.
Данил
Одно дело, когда обновляются все юниты, совсем другое - когда рисуются. Хотя обычно драйвер достаточно умный, чтобы не выполнять ненужные рисования. |
Re: Скроллинг в 2д мире.
Цитата:
|
Re: Скроллинг в 2д мире.
Код:
Global CameraX:Int , CameraY:Int |
Re: Скроллинг в 2д мире.
Протестировал - одинаково.
|
Ответ: Скроллинг в 2д мире.
Неправда, с SetViewport() и SetOrigin() быстрее, но на маленьких примерах незаметно.:tongue: Да и кода меньше получается:)
dimanche13 спс за пример:) |
Ответ: Скроллинг в 2д мире.
Давай код)
ибо я тестировал с большим количеством объектов-прямоугольников) У меня одинаково было) А то что кода меньше - да... согласен (: |
Часовой пояс GMT +4, время: 19:05. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot