Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 23.04.2012, 18:11   #16
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 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
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 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
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Круглый радар

угу изображение размером 10245x1050
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 20:07   #19
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Круглый радар

Я предлагаю для меньшего гемороя (сам правда не реализовал)
- создать дополнительную камеру
- расположить ее над персом на нужной высоте и повернуть на перса
- отображать на этой камере нужные тебе фигуры вместо Entity
- рендерить это хозяйство и ложить в Image
- наложить нужную маску на Image или (как предлагали) DrawImageRect
Всё
__________________
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 20:09   #20
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 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
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Круглый радар

Сообщение от Gector Посмотреть сообщение
А нафига тебе карта таких размеров? Сожми ее до 1000х100 и регулируй размеры по двум осям а не по одной как в примере. Ну или до 1000х1000 подкрути.

Угу. И получить еще один рендер).
яб с радостью тоько придётся менять размер и у афто динамических обьектов и кучи всего это тоже очень сложно будет + у меня 15 авто у каждого 4 колеса у каждого колеса 3 настройки подумай сколько надо менять 180 настроек
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 21:03   #22
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Круглый радар

Сообщение от tirarex Посмотреть сообщение
яб с радостью тоько придётся менять размер и у афто динамических обьектов и кучи всего это тоже очень сложно будет + у меня 15 авто у каждого 4 колеса у каждого колеса 3 настройки подумай сколько надо менять 180 настроек
Ээээ... Я про размеры картинки карты).
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 21:24   #23
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Круглый радар

лан думаю будет весить много но что уж сделать
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 21:47   #24
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Круглый радар

Сообщение от burovalex Посмотреть сообщение
Я предлагаю для меньшего гемороя (сам правда не реализовал)
- создать дополнительную камеру
- расположить ее над персом на нужной высоте и повернуть на перса
- отображать на этой камере нужные тебе фигуры вместо Entity
- рендерить это хозяйство и ложить в Image
- наложить нужную маску на Image или (как предлагали) DrawImageRect
Всё
У меня в игре рендер бывает жрет 5-15 миллисекунд. Цикл 1000/30=33 миллисекунды. Если я включу 2-й рендер мой фпс накроется медным тазом. Такое можно реализовывать только в крайне редких случаях, и то я б сказал не самое качественное решение. Намного лучше сгенерировать миникарту программно во время загрузки раунда, но это тоже не всегда получится.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
tirarex (23.04.2012)
Старый 23.04.2012, 21:52   #25
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Круглый радар

ну думаю генерировать карту это если ты делаеш поуровневую игру да и то лучше сделать рендер карты в максе потом обрисовать углы дороги и вставить в игру
в блитзе так неполучится
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 22:02   #26
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Круглый радар

Сообщение от tirarex Посмотреть сообщение
ну думаю генерировать карту это если ты делаеш поуровневую игру да и то лучше сделать рендер карты в максе потом обрисовать углы дороги и вставить в игру
в блитзе так неполучится
Есть способ, но годится больше для стратежек. Генерировать с помощью linepick карту которая будет строиться на том какой объект карты был пикнут.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:03.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com