Варианты движения по неровной поверхности...

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Варианты движения по неровной поверхности...

Сообщение Gemini » 23.12.2008 (Вт) 18:37

Игра: Bud ReadHead
Изображение

Как видно на скриншоте ГГ (главный герой) передвигается по не ровной поверхности... (Чисто для себя (для опыта) хочу понять как это исполнено )

Я вижу два варианта решения данной ситуации:
1. Это делать маску для поверхности уровня (для не проходимых элементов)....
Но это не вариант т.к. на уровне могут существовать и передвижные объекты. К тому же передвижения игрока становятся рывками + есть вариант где нибудь 'залипнуть' .
(т.е. как я для себя понял этот вариант не совершенный и не коммуникабельный, т.е. сам собой отпадает....)

2. Сделать коллизии линия с кругом...
Пример: \ __
\_____________/ \
Тут мы можем узнать с каким отрезком мы столкнулись и уже из этого узнать под каким углом лежит отрезок, после чего пускаем ГГ под таким же углом....
Но этот метод я смог протестировать только на половину. Всё остановилось на правильном ( в нужном направлении + угол) передвижении игрока....

Теперь сам вопрос:
1. Как вы думаете как это реализовано ( свои варианты).
2. Если есть опыт или явно хорошие примеры поделитесь пожалуйста....


Заранее благодарен!
У вас нет доступа для просмотра вложений в этом сообщении.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Варианты движения по неровной поверхности...

Сообщение Mikle » 24.12.2008 (Ср) 11:13

Главный цикл:
1. проверка под ногами, если пусто - падаем, goto 1
2. опрос управления, если нажато влево - dx=-1, вправо - dx=1, иначе goto 1
3. Проверяем координаты от x+dx,y+dy, до x+dx,y-dy, где dy - максимально допустимый перепад высот, более крутой склон непроходим
если везде занято - goto 1
4. Перемещаем игрока в самую нижнюю незанятую координату.
5. goto 1.
Естественно goto - это условно, я бы делал на DO-Exit DO-LOOP. Перед п.4 можно вставить проверку по росту.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Варианты движения по неровной поверхности...

Сообщение Gemini » 24.12.2008 (Ср) 15:44

Mikle писал(а):Главный цикл:
1. проверка под ногами, если пусто - падаем, goto 1
2. опрос управления, если нажато влево - dx=-1, вправо - dx=1, иначе goto 1
3. Проверяем координаты от x+dx,y+dy, до x+dx,y-dy, где dy - максимально допустимый перепад высот, более крутой склон непроходим
если везде занято - goto 1
4. Перемещаем игрока в самую нижнюю незанятую координату.
5. goto 1.
Естественно goto - это условно, я бы делал на DO-Exit DO-LOOP. Перед п.4 можно вставить проверку по росту.



Mikle Это ты про вариант с маской? (сам когда нибудь делал подобное?)
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Варианты движения по неровной поверхности...

Сообщение Mikle » 24.12.2008 (Ср) 20:05

Делал еще 20 лет назад на Atari. Работает и на варианте с маской, и на 1D хейтмапе, что гораздо эффективнее.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Варианты движения по неровной поверхности...

Сообщение Gemini » 24.12.2008 (Ср) 22:00

Mikle писал(а):Делал еще 20 лет назад на Atari. Работает и на варианте с маской, и на 1D хейтмапе, что гораздо эффективнее.

:shock: :shock: :shock:

Поделись пожалуйста опытом... Что такое '1D хейтмап' ? Было бы ОООчень интересно.....
В нашем деле главное ЛОГИКА.

косил косой косой косой.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Варианты движения по неровной поверхности...

Сообщение iGrok » 24.12.2008 (Ср) 23:40

Gemini писал(а):Что такое '1D хейтмап' ? Было бы ОООчень интересно.....

"Вектор" высот, одномерная карта высот. Т.е. одномерная таблица, определяющая h для каждого x. Актуально для двумерной игры с "видом с боку".
label:
cli
jmp label

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Варианты движения по неровной поверхности...

Сообщение Alprog » 25.12.2008 (Чт) 2:27

Только при одномерной маске нельзя сделать "второй этаж".

Ещё можно каждую вертикальную полосу в 1 пиксель (или игровую клетку) задавать как-нибудь так:
от 0 до 35 проходимо, дальше до 50 непроходимо, дальше до 100 проходимо... и т.д.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Варианты движения по неровной поверхности...

Сообщение Gemini » 25.12.2008 (Чт) 21:05

Не.. 1D хейтмап не катит т.к. Этап может быть много уровневым (Слоеным) .


iGrok писал(а):одномерная таблица, определяющая h для каждого x


Я про это уже думал но это немного не то.... Почему то я склоняюсь больше к соллизии круга и линии...


Alprog писал(а):Только при одномерной маске нельзя сделать "второй этаж".

Ещё можно каждую вертикальную полосу в 1 пиксель (или игровую клетку) задавать как-нибудь так:
от 0 до 35 проходимо, дальше до 50 непроходимо, дальше до 100 проходимо... и т.д.


Не слишком большой массив получиться если карта большая.... (3000х3000 - например)
А если использовать игровую клетку и передвигать ГГ по миру то получаться не красивые рывки при подъёме/спуске...

Надо придумать что - то более красивое...

Есть ещё какие нибудь мысли?

ЗЫ. Надеюсь все гениальное просто (не из-за того что хочу отделаться лёгким испугом, а из-за того что решение должно быть где то рядом.....)
В нашем деле главное ЛОГИКА.

косил косой косой косой.

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Re: Варианты движения по неровной поверхности...

Сообщение StimorolD3DX » 25.12.2008 (Чт) 21:34

Делай несколько хейдмепов для уровня. Где каждому этажу по хейдмапе.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Варианты движения по неровной поверхности...

Сообщение Gemini » 26.12.2008 (Пт) 16:36

StimorolD3DX писал(а):Делай несколько хейдмепов для уровня. Где каждому этажу по хейдмапе.


Это единственный верный вариант????? (Или люди ещё делают как то по другому?)

(Всех с наступающим НГ!!!)
В нашем деле главное ЛОГИКА.

косил косой косой косой.


Вернуться в Мультимедиа

Кто сейчас на конференции

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

    TopList