|
22.04.2012, 16:59
|
#1
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Круглый радар
делал я дальше один из своих проектов и нашёл новую проблему
это радар мне он нужен не квадраный а круглый
как тут (оттуда и взял текстуры)
пикча в аттаче
но я таки ничего непридумал как сделать такой радар
для рисовки пользуюсь Fastimage
|
(Offline)
|
|
22.04.2012, 17:25
|
#2
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от tirarex
делал я дальше один из своих проектов и нашёл новую проблему
это радар мне он нужен не квадраный а круглый
как тут (оттуда и взял текстуры)
но я таки ничего непридумал как сделать такой радар
для рисовки пользуюсь Fastimage
|
Первая картинка не грузится.
Юзай синусы и косинусы и угол поворота игрока.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
22.04.2012, 17:27
|
#3
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
мне нужно идею как реализовать круглый радар вот и всё
|
(Offline)
|
|
22.04.2012, 18:15
|
#4
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Круглый радар
Делай квадратный и используй маску чтобы скрыть лишнее
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.04.2012, 18:15
|
#5
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Круглый радар
А у тебя есть идея как сделать радар квадратным?
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
22.04.2012, 18:40
|
#6
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от Igor
А у тебя есть идея как сделать радар квадратным?
|
Это тоже просто. Только обработка будет с учетом не дистанции, а с учетом нахождения в площади радара.
Как я понял у автора проблема не столько с радаром сколько с поворотом карты. Принцип будет тот же. Только вместо точки будет центр-начало координат от которого будет отчитываться перемещение на экране.
Подробнее распиши проблему.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
22.04.2012, 18:45
|
#7
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
мне надо чтоб по середине была стрелка - игрок
на фоне была карта и всё
карта некрутится
крутится сама стрелка на ней
|
(Offline)
|
|
22.04.2012, 18:54
|
#8
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от tirarex
мне надо чтоб по середине была стрелка - игрок
на фоне была карта и всё
карта некрутится
крутится сама стрелка на ней
|
Поворачиваешь стрелку на угол поворота перса в мире. Карту двигаешь относительно перса (его смещение в мире передаешь карте). Вот и все. Остальное прячешь с помощью маски.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
22.04.2012, 19:55
|
#9
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
а можно поподробнее как двигать карту и неоткожусь от маленького примера с текстурой из первого поста
|
(Offline)
|
|
22.04.2012, 21:11
|
#10
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Круглый радар
В Блице есть оператор:
DrawImageRect image,x,y,rect_x,rect_y,rect_width,rect_height,[frame]
Изучи его и посмотри в FastImage есть аналог. Потом берешь рисуешь в фотошопе карту (или генерируешь рисунок программно, это как сам задумаешь) загружаешь рисунок в оперативу, и рисуешь необходимый кусок карты используя тот оператор что я тебе дал. Все просто как дверь, а как говорили парни, хочешь круглую карту делай маской.
Пример:
111111111111111
111111101111111
111111000111111
111110000011111
111100000001111
111000000000111
111100000001111
111110000011111
111111000111111
111111101111111
111111111111111
Представь что это рисунок, теперь представь что нарисован не ромбик а круглешок. Пикселы под цифрой 1 - белый цвет. Пикселы под номером 0-черные. Маскируешь в рисунке 0 (черный) цвет. И рисунок начинает быть похожим на белую рамку. Накладываешь эту белую рамку на рисунок с картой, а на рисунке с картой маскируешь белый цвет. Вуаля - круглая белая рамка исчезает на рисунке с картой и мы имеем круглую карту.
п.с. Не вздумай юзать EntityDistance для проверки радиуса около перса. Это ш проекция в которой ось У игнорится, а в команде EntityDistance она учитывается. Напиши сам функцию:
Function Distance#(X1#,Z1,X2#,Z2#)
Return Sqr((X2-X1)^2+(Z2-Z1)^2)
End Function
И будет тебе счастье!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.04.2012, 21:15
|
#11
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
Global Player=CreateCube()
Cam=CreateCamera(Player): PositionEntity Cam,0,3,-5
Global Cube=CreateCube(): PositionEntity Cube,2,0,10: EntityColor Cube,255,0,0
Global RadarMap=CreateImage(512,512)
SetBuffer ImageBuffer(RadarMap)
For i=0 To 10
Color Rand(255), Rand(255), Rand(255)
Rect Rand(0,512),Rand(0,512), Rand(0,512),Rand(0,512)
Next
SetBuffer BackBuffer()
MidHandle RadarMap
Global RadarMask=CreateImage(256,256)
SetBuffer ImageBuffer(RadarMask)
Color 0,0,0
Rect 0,0,256,256
Color 255,255,255
Oval 0,0,256,256
SetBuffer BackBuffer()
MaskImage RadarMask,255,255,255
Function Radar()
Local Image=CreateImage(256,256)
SetBuffer ImageBuffer(Image)
Cls
DrawImage RadarMap,-(512/400)*EntityX(Player),(512/400)*EntityZ(Player)
Color 255,0,0
; Куб впереди игрока на радаре определяется относительно самого игрока
Rect (256/2)+(512/400)*(EntityX(Cube)-EntityX(Player)),(256/2)-(512/400)*(EntityZ(Cube)-EntityZ(Player)),5,5
;Линия указывающая направление. В твоем случае нужно просто установить угол.
Line 256/2,256/2,(256/2)+Cos(-1*(EntityYaw(Player)+90))*10,(256/2)+Sin(-1*(EntityYaw(Player)+90))*10
DrawImage RadarMask,0,0
SetBuffer BackBuffer()
DrawImage Image,(GraphicsWidth()/3)*2,(GraphicsHeight()/3)*2
End Function
Repeat
If KeyDown(17) MoveEntity Player,0,0,.5
If KeyDown(31) MoveEntity Player,0,0,-.5
If KeyDown(30) TurnEntity Player,0,1,0
If KeyDown(32) TurnEntity Player,0,-1,0
UpdateWorld
RenderWorld
Text 10,10,EntityYaw(Player)
Radar()
;DrawImage RadarMap,0,0
;DrawImage RadarMask,0,0
Flip
Until KeyHit(1)
End
Пояснения: 400- реальный размер карты, 512 ее рисунка.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Gector за это полезное сообщение:
|
|
23.04.2012, 00:03
|
#12
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Круглый радар
При помощи DrawPoly делаешь круг из полигонов, на него вешаешь текстуру карты. Смещением текстурных координат делаешь соответственно смещение (да можно и поворот) карты на радаре.
Значки - поверх уже обычным способом.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
23.04.2012, 01:29
|
#13
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Круглый радар
Сообщение от ABTOMAT
При помощи DrawPoly делаешь круг из полигонов, на него вешаешь текстуру карты. Смещением текстурных координат делаешь соответственно смещение (да можно и поворот) карты на радаре.
Значки - поверх уже обычным способом.
|
Только если у тебя FastImage
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
23.04.2012, 10:47
|
#14
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
спасибо всем
особенно
Hulk-DS за описание способа
и
Gector за пример
|
(Offline)
|
|
23.04.2012, 11:40
|
#15
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Круглый радар
Сообщение от Randomize
Только если у тебя FastImage
|
ОП-пост: для рисовки пользуюсь Fastimage
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:16.
|