|
23.04.2012, 18:11
|
#16
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
Сообщение от Gector
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)
|
|
23.04.2012, 19:08
|
#17
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Если я все правильно понял: Меняй размер изображения нарисованной карты в соответствии с реальным размером карты (можно найти с помощью meshwidth и т.д.). В примере он ищет считает соотношение: карта больше нарисованной - карта скроллится медленней, рисунок больше - наоборот быстрее.
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
Global levelsize#=4000
Global map_imagesize=512
Function Radar()
Local Image=CreateImage(256,256)
SetBuffer ImageBuffer(Image)
Cls
DrawImage RadarMap,-(map_imagesize/levelsize)*EntityX(Player),(map_imagesize/levelsize)*EntityZ(Player)
Color 255,0,0
; Куб впереди игрока на радаре определяется относительно самого игрока
Rect (256/2)+(map_imagesize/levelsize)*(EntityX(Cube)-EntityX(Player)),(256/2)-(map_imagesize/levelsize)*(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
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.04.2012, 19:33
|
#18
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
угу изображение размером 10245x1050
|
(Offline)
|
|
23.04.2012, 20:07
|
#19
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Круглый радар
Я предлагаю для меньшего гемороя (сам правда не реализовал)
- создать дополнительную камеру
- расположить ее над персом на нужной высоте и повернуть на перса
- отображать на этой камере нужные тебе фигуры вместо Entity
- рендерить это хозяйство и ложить в Image
- наложить нужную маску на Image или (как предлагали) DrawImageRect
Всё
__________________
|
(Offline)
|
|
23.04.2012, 20:09
|
#20
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от tirarex
угу изображение размером 10245x1050
|
А нафига тебе карта таких размеров? Сожми ее до 1000х100 и регулируй размеры по двум осям а не по одной как в примере. Ну или до 1000х1000 подкрути.
Сообщение от burovalex
Я предлагаю для меньшего гемороя (сам правда не реализовал)
- создать дополнительную камеру
- расположить ее над персом на нужной высоте и повернуть на перса
- отображать на этой камере нужные тебе фигуры вместо Entity
- рендерить это хозяйство и ложить в Image
- наложить нужную маску на Image или (как предлагали) DrawImageRect
Всё
|
Угу. И получить еще один рендер).
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
23.04.2012, 20:50
|
#21
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
Сообщение от Gector
А нафига тебе карта таких размеров? Сожми ее до 1000х100 и регулируй размеры по двум осям а не по одной как в примере. Ну или до 1000х1000 подкрути.
Угу. И получить еще один рендер).
|
яб с радостью тоько придётся менять размер и у афто динамических обьектов и кучи всего это тоже очень сложно будет + у меня 15 авто у каждого 4 колеса у каждого колеса 3 настройки подумай сколько надо менять 180 настроек
|
(Offline)
|
|
23.04.2012, 21:03
|
#22
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от tirarex
яб с радостью тоько придётся менять размер и у афто динамических обьектов и кучи всего это тоже очень сложно будет + у меня 15 авто у каждого 4 колеса у каждого колеса 3 настройки подумай сколько надо менять 180 настроек
|
Ээээ... Я про размеры картинки карты).
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
23.04.2012, 21:24
|
#23
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
лан думаю будет весить много но что уж сделать
|
(Offline)
|
|
23.04.2012, 21:47
|
#24
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Круглый радар
Сообщение от burovalex
Я предлагаю для меньшего гемороя (сам правда не реализовал)
- создать дополнительную камеру
- расположить ее над персом на нужной высоте и повернуть на перса
- отображать на этой камере нужные тебе фигуры вместо Entity
- рендерить это хозяйство и ложить в Image
- наложить нужную маску на Image или (как предлагали) DrawImageRect
Всё
|
У меня в игре рендер бывает жрет 5-15 миллисекунд. Цикл 1000/30=33 миллисекунды. Если я включу 2-й рендер мой фпс накроется медным тазом. Такое можно реализовывать только в крайне редких случаях, и то я б сказал не самое качественное решение. Намного лучше сгенерировать миникарту программно во время загрузки раунда, но это тоже не всегда получится.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.04.2012, 21:52
|
#25
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Круглый радар
ну думаю генерировать карту это если ты делаеш поуровневую игру да и то лучше сделать рендер карты в максе потом обрисовать углы дороги и вставить в игру
в блитзе так неполучится
|
(Offline)
|
|
23.04.2012, 22:02
|
#26
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Круглый радар
Сообщение от tirarex
ну думаю генерировать карту это если ты делаеш поуровневую игру да и то лучше сделать рендер карты в максе потом обрисовать углы дороги и вставить в игру
в блитзе так неполучится
|
Есть способ, но годится больше для стратежек. Генерировать с помощью linepick карту которая будет строиться на том какой объект карты был пикнут.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:54.
|