forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   PlayCanvas (http://forum.boolean.name/showthread.php?t=19214)

pax 18.06.2015 18:08

Ответ: PlayCanvas
 
Прыгать вперед не реально, за боксом не видно ничего.

moka 18.06.2015 19:28

Ответ: PlayCanvas
 
Прикольно.

Только не видно низ игрока, и он загораживает за ним то что находится, следственно сложно узнать когда нужно прыгнуть.
Ну и скорость нужно быстрее конечно =)

RegIon 20.06.2015 22:29

Ответ: PlayCanvas
 
* Скорость будет равна темпу играемого трека
* Моделька будет уже трека, и можно будет наверное немного по нему смещаться
* Автогенерации не будет - пресеты

Посетуйте как адекватно сделать прыжки, а то сейчас при лагах можно не долететь и т.д, всему виной dt и raycast, который возвращает значение в калбеке, который выполняется хрен знает когда, да и срабатывает только если есть объект.
moka, нужен raycast, который будет работать в момент вызова, я так понял, что в API такого нет и придется самому реализовать. AaBb у объекта - это что?


Стыретд фром:

moka 21.06.2015 17:43

Ответ: PlayCanvas
 
aabb - Это по сути прямоугольник у которого грани паралельны осям координатной системы, и объем включает в себя всю модель. https://en.wikipedia.org/wiki/Bounding_volume
Используется чтобы проще было проверить на пересечение объемов или там объем<>фруструм.
Вообще я бы на твоем месте никакую физику не использовал бы.

У тебя простая логика полосок и нескольк дорог. В 2д проверить если ты на полоске или нет очень просто.
Вся игровая логика ничего общего с рендером не должна иметь.
Тогда и физика не нужна, и рейкасты никакие. И проще будет менять визуальный стиль.

RegIon 21.06.2015 22:30

Ответ: PlayCanvas
 
Да я хотел так сделать, но смутило что нужно пробегать весь массив объектов и сравнивать положения + размер с положением + размером игрока. + z уровень, если проверять сверху.

Igor 22.06.2015 01:15

Ответ: PlayCanvas
 
Массив можно отсортировать, например, по направлению вдоль взгляда - и с помощью бинарного поиска выбрать только те препятствия, которые пересекаются вдоль неё с игроком - им понадобится проверка по остальным осям. (O(logN) vs O(N)). Ещё можно размер игрока (aabb), прибавить ко всем препятствиям и считать игрока точкой.
P.S. А можно ещё проще - запоминать количество пройденных элементов - и проверять прохождение мимо следующего.

pax 22.06.2015 07:57

Ответ: PlayCanvas
 
А виртуальный таймлайн с тремя треками как во флеше нельзя придумать? У каждой дорожки положение + длина. Дорожки по таймлайну отсортированы в порядке появления. В любой момент времени для проверки доступны всего три дороги, которые еще не прошел или до которых не дошел. Которые прошел сразу исключаются из обсчета.
Проверка такая: если твое положение меньше начала дороги - упал. Как только дорога кончается, обсчет переключается на следующую и в следующем апдейте сработает обсчет новой дороги и автоматически упадешь, т.е. всего одна проверка текущей дороги. И таких проверок три. Плюс три проверки на завершение дороги и переключении на следующую. Какие AABB то? Здесь они вообще не нужны. Размер игрока тоже легко имитируется.

RegIon 22.06.2015 08:52

Ответ: PlayCanvas
 
Можно все, главное что бы работало нормально и overhead большим не был.
P.S.
Это не флеш на скрине. Это Rauman 3, один из уровней.
Треков не обязательно 3. Не обязательно ровные, хотя это не меняет логики

pax 22.06.2015 09:09

Ответ: PlayCanvas
 
Редактор таймлайна флеша я привел как наглядный пример. Тоже самое например во всяких редакторах звуков и музыки.
Игрок находится на линии проигрывания:

RegIon 22.06.2015 09:39

Ответ: PlayCanvas
 
Аа, я не понял, так как не пользовался.
Я хочу сделать так:
1.Сортируем массив дорожек по положению начала
2. В Update проходим циклом от дорожки с индексом start до первой дорожки, у которой позиция больше позиции игрока.
3. после прохода дорожки start+1 - смещаем начальный индекс, так как дорожка позади и она нам не нужна.
Про чекпоинты: хранить в них текущий индекс дорожки и присваивать его start, что бы не проходить массив сначала до позиции игрока.

St_AnGer 22.06.2015 11:55

Ответ: PlayCanvas
 

Цитата:

Сообщение от RegIon (Сообщение 296778)
Стыретд фром:

Ты делаешь аналог AudioSurf? :)

moka 22.06.2015 14:28

Ответ: PlayCanvas
 
Цитата:

Сообщение от RegIon (Сообщение 296823)
Я хочу сделать так:
1.Сортируем массив дорожек по положению начала
2. В Update проходим циклом от дорожки с индексом start до первой дорожки, у которой позиция больше позиции игрока.
3. после прохода дорожки start+1 - смещаем начальный индекс, так как дорожка позади и она нам не нужна.
Про чекпоинты: хранить в них текущий индекс дорожки и присваивать его start, что бы не проходить массив сначала до позиции игрока.

Звучит хорошо. Главное сделай все это без завязки на рендере и физики.

RegIon 22.06.2015 17:15

Ответ: PlayCanvas
 
Цитата:

Сообщение от St_AnGer (Сообщение 296824)



Ты делаешь аналог AudioSurf? :)

Да, но без автогенерации, так как будет убого.

RegIon 25.06.2015 15:19

Ответ: PlayCanvas
 
http://playcanv.as/p/hgd8lBvU

Обновил. Отключил физику, теперь тупо математика.
Не смог правда пока разобраться с начальной границей перебора, вышли небольшие сложности с пунктом 3.

Осталось нормально описать прыжки, а то у меня коэффициенты скоростей вертикальных и горизонтальных вручную подобраны, из-за этого можно промахнутся и всякие подобные недочеты.
Подскажите как правильней сделать?

Igor 25.06.2015 23:45

Ответ: PlayCanvas
 
ну, добавить параметры - время прыжка t, ускорение свободного падения g и расстояние между дорожками l.
Тогда горизонтальная скорость vx =l/t, вертикальная vy = g*t/2.
В принципе, позицию можно описать как функцию от времени и вообще не думать о скоростях.
Моделька в момент приземления как-то резко дёргается - приземляется раньше, чем должно быть с точки зрения смотрящего на полёт игрока.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot