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

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

Вернуться   forum.boolean.name > Проекты > Проекты на BlitzMax

Ответ
 
Опции темы
Старый 10.03.2012, 16:53   #211
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Я все же решил сделать по-другому. Переделаю игру в 3D, и вместо картинок будут спрайты, чтобы не изобретать велосипед.
(Offline)
 
Ответить с цитированием
Старый 10.03.2012, 17:36   #212
Mhyhr
Бывалый
 
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений
(для 858 пользователей)
Ответ: Vivo

Nikich, всегда в таких случаях двигается камера(точнее - это манипуляции с матрицами). В 2D камерах ортогональная проекция.(в Blitz3D вроде тоже есть ортогональный режим.).Вот и все различия. Как раз и спрайты пригодятся.
(Offline)
 
Ответить с цитированием
Старый 10.03.2012, 18:02   #213
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

ну не знаю, ничего о камерах в 2Д в блитце я не слышал. Может есть сторонние библиотеки, но я ими не пользуюсь.
(Offline)
 
Ответить с цитированием
Старый 10.03.2012, 18:30   #214
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Vivo

есть origin x,y или как то так команда попробуй ее

но в этом случае гуи и персонаж надо ценровать отсноительно сдвига )
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (11.03.2012)
Старый 11.03.2012, 16:47   #215
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Подмигивание Ответ: Vivo

Сообщение от Nikich Посмотреть сообщение
ну не знаю, ничего о камерах в 2Д в блитце я не слышал. Может есть сторонние библиотеки, но я ими не пользуюсь.
Ты же не хочешь сказать, что ждешь готовой команды "СоздайтеМнеКамеруВ2Д()"?

Это реализуется двумя-тремя операторами.

Дано:
-блоки, каждый имеет свои координаты относительно точки отсчета (0,0). Эти координаты изменяться НЕ БУДУТ.
-игрок, который тоже имеет координаты, относительно точки отсчета (0,0).
-воображаемая камера которая должна:
--висеть над тем местом, которое задано ее координатами (относительно точки отсчета (0,0))
--показывать соответствующие блоки

Координаты игрока будут совпадать с координатами камеры, в случае жесткой привязки (тогда игрок будет всегда по центру экрана)
Или немного плавать относительно координат камеры, если нужна плавная смена направления (камера "летает" за игроком).

Заводим две переменные: camera_x, camera_y

Все, осталось последнее - модифицировать то место программы, которое отвечает за рисование блоков на экране.
Ты ведь не рисуешь все блоки подряд? Ты наверняка рисуешь только те, которые должны быть видны на экране.
Вроде:
If block.x>0 and block.x<640 then
	if block.y>0 and block.y<480 then
		drawimage img_block, block.x, block.y
	endif
endif
Надо изменить это условие примерно так:
If block.x>camera_x and block.x<(camera_x+640) then
	if block.y>camera_y and block.y<(camera_y+480) then
		drawimage img_block, block.x-camera_x, block.y-camera_y
	endif
endif
Не так уж и сложно.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (11.03.2012)
Старый 11.03.2012, 17:32   #216
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Гм. А какой способ лучше? Через origin короче, но двигать начало системы координат подозрительно.
Хотя команды "БыстроМнеКамеруЗапилил()" явно не хватает.
UPD
И почему координаты ГГ должны совпадать с координатами камеры? Ведь тогда игрок за экран сможет убежать.
(Offline)
 
Ответить с цитированием
Старый 11.03.2012, 22:06   #217
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: Vivo

Сообщение от Nikich Посмотреть сообщение
Гм. А какой способ лучше? Через origin короче, но двигать начало системы координат подозрительно.
Хотя команды "БыстроМнеКамеруЗапилил()" явно не хватает.
UPD
И почему координаты ГГ должны совпадать с координатами камеры? Ведь тогда игрок за экран сможет убежать.
тогда наилучшая команда "СделатьИгруЗаипцаКакЯХочу()"
(Offline)
 
Ответить с цитированием
Старый 11.03.2012, 22:37   #218
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Кстати, все еще требуется помощь в создании сайта.
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 05:36   #219
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Vivo

Самое простое делать через Origin. Делаешь для карты Origin(scrollX, scrollY), а для гуи возвращаешь в начало Origin(0,0).
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 17:27   #220
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Опять проблемы. Что-то они зачастили. Возможно, вы слышали о такой игре ProjectZomboid, если инет, скачайте и поиграйте она того стоит. Но не в этом дело. Поговорив с геймдизайнером, мы пришли к мнению, что графику стоит сделать изометрическую. И сразу же возник вопрос. Это довольно трудно объяснить тем кто не играл, но я попробую. У нас есть одна стена, через неё пройти мы не можем. Если мы расположим ее на одном тайле, то всё прекрасно и понятно, но тогда она будет уж слишком толстой. Разработчики этой игры думали также, и сделали стены идеально плоскими, разместив их между(!) тайлами. То есть их ширина равна одному пикселю. В этом и есть вопрос: как же тогда делать коллизию, если она не занимает не один тайл? Если я не смог объяснить, поиграйте в эту игру и попробуйте обойти стены домов, тогда станет понятно.
Миниатюры
Нажмите на изображение для увеличения
Название: screen.png
Просмотров: 650
Размер:	524.0 Кб
ID:	16323  
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 19:47   #221
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Vivo

ну сделать проверку пересечений линия если правильно понял

(про стенки) ?
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 20:46   #222
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Не, это муторно. Тогда придется в основании каждой стенки рисовать еще линии. Должно быть что-то проще.
(Offline)
 
Ответить с цитированием
Старый 13.03.2012, 06:57   #223
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Vivo

Мне такой вариант подумался.

Сделать плитки объектами (Type), задать им свойства "наличие стенки на краю плитки" по четерём направлениям. (id тайла тоже сюда, если уместно)
Field walls%[4] ;0 - нет стены, 1 - есть

А потом, когда игрок решит покинуть текущую плитку (curCell), делать проверку стенки в нужном направлении (direction).
if(curCell\walls[direction]<>0) Return ;есть стена, никуда не двигаемся

direction = {0,1,2,3} - заранее заданные константы направления, 0 например вверх и далее по часовой стрелке (как уж условишься сам).
(Offline)
 
Ответить с цитированием
Старый 13.03.2012, 10:01   #224
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Так тоже не катит. Этот способ хорош, если ГГ пытается перейти с клетки со стенкой на свободную клетку. А если наоборот то фиг. Тогда придется еще просчитывать какая у него следующая клетка.
(Offline)
 
Ответить с цитированием
Старый 13.03.2012, 13:25   #225
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

Ну так у клетки на которой стоит человечек тоже можно прописать этот параметр для той же стенки. Только надо еще отдельно хранить где-то массив этих стенок, ведь они могут быть разных типов (камень, кирпич, дерео, дверь, окно и т.д.)
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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