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

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

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

Ответ
 
Опции темы
Старый 02.01.2009, 14:13   #1
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Колизии на тайловой карте.

С НОВЫМ ГОДОМ!! У меня вопрос, друзья, подскажите, каким образом мне сделать коллизии на тайловой карте?? Просто тупо перебирать список с тайлами и искать координату, которая сколлизилась, ну не знаю - по-моему это не оптимально. Как сделать правильно??
(Offline)
 
Ответить с цитированием
Старый 02.01.2009, 14:43   #2
jimon
 
Сообщений: n/a
Ответ: Колизии на тайловой карте.

смотря что нужно, если нужно узнать в какой клетке находится заданная точка то стоит воспользоватся математическим методом - те каждая клетка тайла описывает какую-то область точек, если поразмышлять над формулами которые генерируют сетку тайла то можно очень просто сделать функцию которая просто будет возращать номер тайла из заданных 2д координат, если надо сделать коллизии между обьектами - думаю стоит использовать деревья для разбивки тайловой карты и узнаем с какими обьектами нужно проверять коллизии для заданого
 
Ответить с цитированием
Старый 03.01.2009, 14:35   #3
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Ответ: Колизии на тайловой карте.

У меня есть тип игрока TPlayer, есть тайловая карта (список с тайлами), есть тип тайла TBRICKTILE. В этом типе есть метод Update, где проверяется, не столкнулся ли игрок с тайлом TBRICKTILE. Делается это примерно вот так вот :

Method update()
		For p:TPlayer = EachIn Gamelist
		If p.x<x+64  And p.x+64>x And y >= p.y-1 Then g=0 Else g=1
		Next
endmethod()
g - переменная гравитации.

Не работает.. Я что-то делаю не так или совсем не в ту сторону копаю??
(Offline)
 
Ответить с цитированием
Старый 03.01.2009, 14:54   #4
jimon
 
Сообщений: n/a
Ответ: Колизии на тайловой карте.

к примеру ты имеешь 2d масив с тайлами, координаты каждого тайла :
xmin = xpos * 64
xmax = (xpos + 1) * 64
ymin = ypos * 64
ymax = (ypos + 1) * 64
где xpos,ypos это координаты в масиве

собсно имея x,y игрока мы можем найти координаты тайла в масиве
и проверяем коллизию игрока только с етим тайлом и\или с тайлами которые его окружают
 
Ответить с цитированием
Старый 03.01.2009, 20:35   #5
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Колизии на тайловой карте.

xmin = xpos / 64
xmax = (xpos + width) / 64
ymin = ypos / 64
ymax = (ypos + height) / 64
я думаю, так надо, если уж на то пошлО. поправился, там деление...
__________________

Последний раз редактировалось dimanche13, 03.01.2009 в 20:59.
(Offline)
 
Ответить с цитированием
Старый 03.01.2009, 20:46   #6
jimon
 
Сообщений: n/a
Ответ: Колизии на тайловой карте.

dimanche13
тайловая клетка может занимать несколько клеток в масиве ?
 
Ответить с цитированием
Старый 05.01.2009, 13:48   #7
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Ответ: Колизии на тайловой карте.

Спасибо за советы и ответы, я исправил, сделал немного по-другому и тут еще одна проблема появилась.. Я написал вот это в методе обновления игрока:

	For l:Tlevel = EachIn Levellist
		If l.map[ytile+1,xtile] =1 Then g=0 Else g=1
		Next
ytile, xtile - тайловые координаты игрока, вычисляется xtile=x/64, ytile=y/64
Возникла проблемка иного рода.. Теперь когда игрок двигается вправо все происходит нормально, есть коллизия, падает куда надо, но если игрок двигается влево то он начинает падать раньше, чем это нужно.. Примерно на одну клетку.. Вот так вот.. Как можно это исправить??

**Извините, уже нашел решение проблемы в смещении координат, всем спасибо))**

Последний раз редактировалось Ende, 05.01.2009 в 14:11.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение персонажа по карте. GRAY_WOLF Наше Open Source Software 0 18.12.2009 19:33
Странная работа Колизии. Delta_Q 3D-программирование 5 23.10.2007 23:14
Колизии в BlitzMAX breadman BlitzMax 9 24.09.2007 18:29
движение по карте(линиям, обьектам) ZeFiR Основной форум 14 17.04.2006 21:34
Как размещять обьекты на карте? Lexa 2D-программирование 23 22.10.2005 00:24


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


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