Вниз  Java-программирование (1-ые посты)
- 23.09.2015 / 11:59
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
19Ram84, да, нужен JP-8 и выше. А k810 - JP-7.
__________________
 let live
- 28.09.2015 / 10:18
19Ram84
  Пользователь

19Ram84 
Сейчас: Offline
Цитата aNNiMON:
19Ram84, да, нужен JP-8 и выше. А k810 - JP-7.
Ясно, спасибо.
А вот отсюда и напрашивается вопрос, как это реализовать на всех телефонах, а не только с поддержкой чапи?
Есть идея сделать что то наподобие католога фс телефона, что то типа закладок, но проблема сделать запуск из закладок прог java, а в самой закладке будет находиться инфа об иконке файла, открываемом им приложении и прочие параметры :)
Но пока конечно, до этого далеко(даже сказать поздно, вспоминая пост про машину времени)
- 28.09.2015 / 10:22
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
19Ram84, никак. Абсолютно.
__________________
 let live
- 28.09.2015 / 10:50
19Ram84
  Пользователь

19Ram84 
Сейчас: Offline
Цитата aNNiMON:
19Ram84, никак. Абсолютно.
Жаль :-(
Но всё равно, надо бы поискать нестандартные подходы :)
- 4.10.2015 / 18:10
nikita488m
  Пользователь

nikita488m 
Сейчас: Offline
Добрый вечер. Есть двигающийся спрайт (игрок), есть TiledLayer. Нужно сделать коллизию (чтобы спрайт не проходил сквозь TiledLayer, а стоял на нём), никак не могу придумать как её сделать. Подскажите пожалуйста, как?

Изменено nikita488m (4.10 / 18:22) (всего 1 раз)
- 4.10.2015 / 19:50
Banschey
  Пользователь

Banschey 
Сейчас: Offline
nikita488m,
Открыть спойлер

- 4.10.2015 / 20:13
Magatino
  Администратор

Magatino 
Сейчас: Offline
nikita488m, Хорошо бы если ты скинул скриншот, а так, вот самое простое:
  1. public void move(int dx, int dy)
  2. {
  3. x+=dx;
  4. y+=dy;
  5.  
  6. if (myHero.collidesWith(myTiledLayer, false))
  7. {
  8. x-=dx;
  9. y-=dy;
  10. }
  11. }


Изменено Magatino (4.10 / 20:15) (всего 2 раза)
- 4.10.2015 / 21:03
Naik
  Пользователь

Naik 
Сейчас: Offline
Banschey, еще нужно учесть что на больших скоростях обьекты смогут пролетать через другие, т.е. за одну итерацию проскочат и пойдут дальше. Чтобы избежать такого, я проверял не хит бокс, а прямоугольник, полученный с координат до движения + хитбокс и после, и тогда отбрасывал назад, на координаты, когда обьекты будут максимально близки.

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

Изменено Naik (4.10 / 21:06) (всего 1 раз)
- 4.10.2015 / 21:55
nikita488m
  Пользователь

nikita488m 
Сейчас: Offline
Цитата Magatino:
nikita488m, Хорошо бы если ты скинул скриншот, а так, вот самое простое:
  1. public void move(int dx, int dy) { x+=dx; y+=dy;  if (myHero.collidesWith(myTiledLayer, false)) { x-=dx; y-=dy;
Спасибо, однако сделал немного по другому:
  1. if(spritePlayer.collidesWith(tiledLayer, true))
  2. {
  3.     spritePlayer.move(-5, 0);
  4. }
Добавил это во все кнопки управления, заменяя значения. Вроде работает :)


Прикрепленные файлы:
N_LJjsu1nBE.jpg (71.83 кб.) Скачано 125 раз
- 5.10.2015 / 00:36
Banschey
  Пользователь

Banschey 
Сейчас: Offline
Naik, да ты прав. Но есть ещё ощё одно, при сильной нагрузке на цикл можно провалиться и с малой скоростью. Чем больше расчетов тем больше вероятность этого. Можно ещё поступить как box2d, если я не ошибаюсь там ещё проверяется на сколько тело вошло в тело, под каким углом итд.. и можно делать и на этом поправки. Но тут что то зло что то, или производительность в ущерб качеству или качество в ущерб производительности. Недавно работал над игрой, и столкнулся с этой проблемой так что сам подумываю над матрицами.
Как доделаю выложу :gg:

nikita488m, все же используй стразу пример с dx и dy, потому что потом все равно придется, и ко времени привязку делай.
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)