Цитата:
Сообщение от Akopalipsis
Проще всего наверное будет поседеть немного за изучением алгоритмов пересечений...что то типа вот этого http://algolist.ru/maths/geom/intersect/ ..или ещё есть книги алгоритмы компютерной графики.Можно конечно поискать и готовые решения ,но это плохой совет!
|
Цитата:
Сообщение от KumoKairo
На самом деле ваш вариант вполне подходит для начала работы со столкновениями - при проверке объектов с помощью хиттестов используется покадровая проверка, поэтому точность проверки прямо зависит от ФПС.
В этом случае, такие вещи как перелет через стену или проваливание сквозь пол решается простым приведением координаты квадрата к какой-то координате платформы (например к верхнему, если кадрат "упал" на платформу, к левому, если квадрат слева от платформы и т.д.)
То есть проверяем столкновение, и после того, как оно найдено, насильно ставим квадрат на нужную нам координату
Но начинайте потихоньку работать с Box2D, благо есть AS3 порт этой библиотеки
|
Я пересмотрел много примеров, и да -там используется хиттест. Но есть непонятные моменты-
Первоначально создаётся массив и туда забиваются все элементы стен уровня:

Код AS3:
var level:Array = new Array();
for (var i=0; i<numChildren; i++){
if (getChildAt(i) is platform){
level.push(getChildAt(i).getRect(this));
}
}
тут вроде всё просто -но я не понимаю запись .getRect(this) - это ставит ограничивающую область прямоугольника для всех элементов стен?
Или вот:

Код AS3:
for (i=0; i<level.length; i++){
if (mHero.getRect(this).intersects(level[i])){
if (speedX > 0) {
mHero.x = level[i].left- mHero.width/2;
}
if (speedX < 0) {
mHero.x = level[i].right+ mHero.width/2;
}
speedX=0;
}
}
Здесь идентичная проверка на пересечения? типа если герой пересекает область прямоугольника клипа из массива стен, то из левой стороны клипа стены из массива вычитаем полуразмер героя?(извиняюсь за каламбур

)
не совсем понял тут свойство .left - .right , применительно в одному клипу можно использовать это?
типа if(mHero.right.intersects(wall.left)), чтобы потом также вычесть полуразмер героя из левой стороны клипа?
И ещё хотел спросить про hitTestPoint(); Некоторые пишут что в мувиклип героя можно вставить маркеры(обычные мувиклипы внутри клипа) и проверять столкновения с препятствием по маркерам. Как такой метод проверки устроен?
PS: для блокового уровня с прямоугольниками это неплохо вроде, а как быть если есть наклонные поверхности другой формы?
