purebasic.info

PureBasic forum
Текущее время: Чт янв 18, 2018 12:52 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Пт май 24, 2013 11:53 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Решил изучить столкновения, передвижение в 2d играх. Столкновения перебором объектов из массива уже получилось но вот камеру которая бы следила за игроком не выходит. Кто нибудь может подсказать по какому принципу все делается?

Изображение
Вот набросок, всю карту можно нарезать на блоки 64x64 пикселя и поместить в массив, при нажатии клавиши вправо вынуть следующие элементы массива для показа, сам игрок при этом всегда будет по центру.

p.s. На рисунке надпись не Перевещения, а Перемещения
p.s.s. Это вид сверху, просто убрана пока что возможность ходить вниз и вверх для упрощения кода

Есть ли способ перемещать не "мир" оставляя игрока по центру, а двигать игрока по миру перемещая камеру за ним? Или лучше остановиться на Игрок всегда в центре?

Есть ли уроки, литература, сравнения способов по этому поводу?

Прикрепляю собственноручно написанный исходник где реализовано передвижение игрока, а не мира. Но с легкостью можно переделать всё в передвижение мира.

Не забудьте сменить разрешение на свое в переменных sizeW и sizeH, весь код прокомментирован.

Заранее спасибо отписавшимся :)


Вложения:
2dstep.zip [2.25 KiB]
Скачиваний: 136


Последний раз редактировалось easy Пт май 24, 2013 2:50 pm, всего редактировалось 1 раз.
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 1:54 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
easy, советую посмотреть 3D примеры.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 1:59 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2241
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
Пункты репутации: 11
Мне было бы не удобно играть, если бы игрок всегда был по центру. Особенно когда я бегу в сторону. Надо что бы камера позволяла видеть больше в той стороне, в которую бежит игрок. Т.е. вот так (если я бегу вправо):
Изображение
Когда игрок останавливается, то камера плавно передвигается и смотрит прямо на игрока (по центру). Но это при условии, что в игре можно бежать и назад.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 2:08 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Никита Однороб писал(а):
посмотреть 3D примеры.

Никита, ты прямо кладезь бесполезных советов!
Ну как 3D примеры могут помочь освоить передвижение в 2d играх?

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 2:13 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
kvitaliy, я увидел слово "камера" и на заголовок даже не стал смотреть :) Прошу прощения :oops:

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 2:46 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
Мне было бы не удобно играть, если бы игрок всегда был по центру.

Это вид сверху, забыл сказать если еще не понятно :) Просто пока что убрал возможность ходить вверх, вниз для упрощения кода.

Никита Однороб писал(а):
easy, советую посмотреть 3D примеры.

Ага и делать свой крайзис :D

Ну так что лучше делать? И есть ли возможность передвигать камеру?

Пока надумал следующее:
1) Делать массив, каждая ячейка содержит свой спрайт, и параметр проходим, не проходим. Игрок по середине, двигается мир
2) Делать массив но добавлять в них полное описание ячейки на случай если там окружность, треугольник и т.д. что бы игрок мог "тереться" о края, а не об пустоту.
3) Делать массив пола, массив предметов (стены например) с описанием параметров всех их углов что бы можно было и окружность и треугольник поставить, двигается камера, но как?

Предметы думаю добавлять следующим массивом в созданные клетки и так же например при врезании или подбирании на клавишу если предмет в зоне досягаемости. Враги следующим массивом и так же как предметы расположены в клетках и смогут так же передвигаться как игрок проверяя наличие преград (но это уже после разбора построения "мира")


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 6:51 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Создал массив и управление. Нужно еще столкновения организовать :D
ps. На слабых компьютерах может наверно зависнуть так как выводится сразу весь массив (2500 ячеек), хотя думаю все ок будет


Вложения:
Game2dtop.zip [113.19 KiB]
Скачиваний: 124
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 7:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Не красиво. Прокрутка поля должна происходить только до краев игрового поля, а у тебя до игрока. Получается белые поля.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 24, 2013 7:37 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Прокрутка поля должна происходить только до краев игрового поля, а у тебя до игрока. Получается белые поля.

Так задумано было, с начало было так - Если игровое поле закончилось то перемещаем игрока с середины экрана в нужную строну, как только игрок опять пришел в середину возвращаем все обратно.
Белые поля можно заменить черными либо еще что нибудь, у многих игр такое видел :) Просто не хотелось игрока уводить из центра. Сейчас начал писать столкновения, массив с стенами создал осталось заставить все это сталкиваться. Так как координаты экрана начинаются с 0,0 как и массив стен, наверно нужно брать переменную camX, отнимать полэкрана и пол игрока для того что бы считать столкновения будто они произошли в середине. В общем как то так :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 12:12 am 
Не в сети
eternal student
Аватар пользователя

Зарегистрирован: Ср ноя 05, 2008 1:35 am
Сообщений: 447
Откуда: Екатеринодар
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
А что очень даже интересно получается. Я тут давеча плагиатил Космических рейнджеров на Plane(естественно в 3D) натянул небо,
билборды на разном удалении от камеры создают паралакс, т.е.
с разной скоростью двигаются за камерой ну и спрайты намертво
закрепленые на мониторе, перемещаются вместе с камерой. Да и актер
(игрок) всегда остается в центре. Тут конечно нужно наверно код
выложить, но он такой ужасный, лень замучила :oops: .
easy если что пиши, поделюсь самой идеей :D

_________________
CQ DX...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 1:41 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
pentod65 писал(а):
билборды на разном удалении от камеры создают паралакс

Паралакс это классно, на Javascript делал для сайта :)

pentod65 писал(а):
Тут конечно нужно наверно код
выложить, но он такой ужасный, лень замучила

Выложи, очень интересно посмотреть :wink:

pentod65 писал(а):
easy если что пиши, поделюсь самой идеей

Сейчас надумал переделать все немного, массив с полом и массив со стенами теперь в разных местах. Пол теперь текстура разрешением 512x512 так как так проще будет резать большие карты и элементов массива будет во много меньше что думаю скажется на производительности в лучшую сторону :) Интересно получиться ли хоть чучуть похоже на CS2D например :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 3:43 pm 
Не в сети
eternal student
Аватар пользователя

Зарегистрирован: Ср ноя 05, 2008 1:35 am
Сообщений: 447
Откуда: Екатеринодар
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Вот, просто код (не программа) с текстурками. Не судить особо. Код зарезан под разрешение 1600*900 (ну уж). Камера пока не следит
за актером, но это не сложно. Что то у меня билборды прозрачные.
В примере BillboardGrass они ведут себя нормально. Нужно плясать
с бубном или может кто что подскажет, где я ступил. В принципе
не о чем, но идея то не плоха? :D
http://yadi.sk/d/wRFUFrNM59YVK

_________________
CQ DX...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 4:10 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
pentod65 писал(а):
http://yadi.sk/d/wRFUFrNM59YVK

Нет файла "Screen3DRequester.pb"


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 4:33 pm 
Не в сети
eternal student
Аватар пользователя

Зарегистрирован: Ср ноя 05, 2008 1:35 am
Сообщений: 447
Откуда: Екатеринодар
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
"Screen3DRequester.pb"-стандартный в примерах есть.

_________________
CQ DX...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб май 25, 2013 5:17 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт янв 01, 2013 6:11 pm
Сообщений: 74
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
pentod65 писал(а):
"Screen3DRequester.pb"-стандартный в примерах есть.

Все подключил, классно выглядит :) Только панель нижняя у меня была не в самом низу


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB