Свободное движение в изометрической игре на основе плитки

Есть ли разумный простой способ реализовать свободное перемещение в изометрической игре на основе плитки? Это означает, что игрок не просто мгновенно перескочит с одной плитки на другую или не будет «привязан» к сетке (например, если движение между фрагментами было анимировано, но вы были бы заблокированы от чего-либо до окончания анимации). Я действительно начинаю с чем-то связанным с игровым программированием, но с помощью этого сайта и некоторых других ресурсов было довольно легко сделать основные вещи, но я не смог найти полезные ресурсы для этой конкретной проблемы ,

В настоящее время я импровизировал что-то близкое к этому: http://jsfiddle.net/KwW5b/4/ (WASD движение). Идея движения заключалась в том, чтобы использовать карту мыши для определения того, когда игрок переместился на другую плиту, а затем перевернул смещения, и по большей части он работает правильно (каждый угол переводит игрока в неправильное положение: см. http://www.youtube.com/watch?v=0xr15IaOhrI , что, вероятно, связано с тем, что я не мог получить полная карта мыши работает правильно), но у меня нет иллюзий, что она даже близка к хорошему /разумному решению. И вообще, это просто демонстрация того, что я хотел бы реализовать.

9 голосов | спросил xtr486 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 29 Sep 2012 03:11:20 +0400 2012, 03:11:20

2 ответа


10

Прежде всего, я предлагаю вам изменить направление: W-up-left S - правая A - вниз-влево D - верхний правый

более интуитивно понятным: W-up S - вниз A - слева D - правая

Что касается вашей озабоченности, я предлагаю вам сделать две функции: один перевод изометрических координат плитки в координаты сетки, а второй наоборот. Таким образом, вы можете просто отделить MVC, и это упростит вашу жизнь при вычислении активной плитки: введите описание изображения здесь>> </p></body></html>

ответил Markus von Broady 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 29 Sep 2012 10:44:06 +0400 2012, 10:44:06
0

Если я понимаю, вы хотите, чтобы игрок перемещал плитки на черепицу, но не прыгал. Вы можете:

1- Начните с tile t0 и смещения 0

2- Когда игрок перейдет на плитку t1 установить смещение = - (t1 - t0)

3- В обновлении плеера, если смещение не равно 0, уменьшаться с использованием времени обновления и скорости проигрывателя.

amount = deltatime * playerSpeed
deltaoff = sqrt(offsetX*offsetX + offsetY*offsetY)
total = min( amount, deltaoff )
offsetX = offsetX - (total * offsetX / deltaoff)
offsetY = offsetY - (total * offsetY / deltaoff)

4- Yo может использовать offset == 0, чтобы знать, когда игрок находится на плитке.

С помощью этого вы получаете игрока, который свободно перемещается по карте, но придерживайтесь плиток.

ответил Zhen 1 +04002012-10-01T13:28:13+04:00312012bEurope/MoscowMon, 01 Oct 2012 13:28:13 +0400 2012, 13:28:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132