Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160

Проверка на столкновение

08.06.2014, 12:42. Показов 3613. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив со списком объектов на сцене. При нажатии стрелок, эти объекты двигаются, создавая перемещение. В центре сцены есть объект - игрок. Его координаты остаются неизменны, т.к он не входит в массив, а стоит на месте, но при этом ощущение что он движется.

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
    public function wallplayer(e:Event):void
    {
            for (i = 0; i < platform_obj_wall.length; i++)
            {
                if (bg_igrok.hitTestObject(platform_obj_wall[i]))
                {
            trace("Набежали на стену");
                }
 
        }
    }
Как мне реализовать столкновение игрока со стеной? Трейс работает, то есть если игрок набегает на объект из массива то выводится Набежали на стену. Как мне сделать так, чтобы игрок не мог пройти через эти стены? Что надо дописать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2014, 12:42
Ответы с готовыми решениями:

Проверка на столкновение
Делаю проверку на столкновение - смысл в том, что в каждый объект вставлен MovieClip под именем hit - собсно проверка идет при столкновении...

Проверка на столкновение
Привет всем, кто может подсказать как проверить на столкновение 2 объекта не использовав Collider и Raycast. Спасибо всем.

Проверка на столкновение кнопок
Привет! Вот какой вопрос. Как выглядит проверка на столкновение двух кнопок? т.е. Есть две кнопки и когда одна сталкивается с другой должно...

23
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 12:58
Расскажите подробнее, как у Вас стены двигаются, как Вы определяете, что сейчас нужно вывести стену?
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
08.06.2014, 13:25  [ТС]
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (right_press_platform) //Двигаем платформу в правую сторону
            {
                for (i = 0; i < len_1; i++)
                {
                    bg_locations.bg_conf.platform_obj[i].x -= speed_platform;
                    Bg_Location.bg_play.rotation = -90;
                }
                
                for (i = 0; i < len_2; i++)
                {
                bg_locations.bg_conf.platform_obj_wall[i].x -= speed_platform;
                
                }
                
            }
platform_obj_wall - массив с объектами стен
platform_obj - массив с остальными объектами не относящиеся к стенам.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 13:46
аааа... я немного вопроса не понял. Подумал, что Вы спрашиваете, как столкновения проверять...
А чтобы не проходил через стены, Вам первым делом нужно "выталкнуть" персонажа из стены ( бывает так,
что персонаж находит на стену ), а потом остановить перемещение стен.
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
08.06.2014, 13:57  [ТС]
ActionScript 3
1
2
3
4
if (bg_play.hitTestObject(bg_locations.bg_conf.platform_obj_wall[i]))
                {
                 player_go = false;
                }
Попробовал таким способом, то есть кнопки работают, только если player_go = true, иначе они не срабатывают. У стены то он останавливается, но уже не двинуться с места) Даже если добавлю
ActionScript 3
1
2
3
4
else
{
player_go = true;
}
То продолжает ходить сквозь стены)
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 14:14
Тут нужно больше подробностей, так-как вариантов решения очень много и почти все они очень простые,
но призваны решать разные задачи.
У Вас стены все прямоугольные? Проверку нужно делать на пересечение только со стенами или ещё полом и потолком?
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
08.06.2014, 14:25  [ТС]
Стены прямоугольные, квадратные. Проверку надо делать только на пересечение со стенами
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 14:29
Сейчас сделаю минимальный пример...

Добавлено через 3 минуты
Только ещё один вопрос - пол прямой или есть под углом?
Если есть участки пола под углом, то существуют места, где косой пол упирается в стену?
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
08.06.2014, 14:39  [ТС]
Так думаю будет показательней))
Миниатюры
Проверка на столкновение  
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 18:26
Оказалось сложнее чем я себе представлял Точнее сказать я не ожидал вид сверху
Но у меня получилось, правда я бы так делать не стал, но для понимания подойдет. Только ещё чуток подумаю и покажу.
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
08.06.2014, 18:36  [ТС]
Хорошо, я и сам уже тучу способов перепробовал, надо как-то запретить двигать платформу, если игрок намеренно упирается в стену, а вот как реализовать я что-то не представляю))
0
 Аватар для Theoryofgames
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
09.06.2014, 00:10
Как вариант - при столкновении проверяем координаты x и y персонажа и стены. В том случае, если координаты x стены меньше координаты x персонажа - запрещает только движение налево, если x стены больше х персонажа - запрещаем движение направо. Аналогично для y.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
09.06.2014, 00:19
MrDead, я не буду Вам пример делать То что я сделал, когда сказал о еще немного времени, сделал неправильно, не учел, что есть стены, которые находятся внутри коробки. И так же я опять забыл о том, что у Вас
фон двигается, а не персонаж.
Как только я это понял, я немного отвлёкся на другие дела и как раз думал.
Сел и сделал контейнер, в который помещается прямоугольный предмет и создаются опорные точки,
которые вертятся вместе с объектами и по которым уже и проверяют столкновения.
Сделал контроллер стен и героя. Все что мне осталось, это нарисовать четыре стены для коробки и ещё одну поместить в саму коробку и испробовать, хотя я знаю что получится.

В общем, я хоть и сказал не буду делать пример, но пока писал, подумал, что ведь обещал...
По этому у меня к Вам вопрос - собираетесь ли Вы и в будущем делать игры и обязательно ли Вам нужно
сделать эту игру самому?
Объясню к чему эти вопросы - есть замечательный, ЛУЧШИЙ физический движок Nape, это предел физики!
И если Вы собираетесь и дальше делать, то учите лучше его, пользы будет больше. Если Вы хотите сами свё сделать с целью самообразования, то я скажу так - если Вы с лёгкостью можете находить косинусы и синусы без класса Math и умеете управлять векторным пространством, то мой пример может послужить неким пособием...
Но если нет, то он обяжет Вас учить все с нуля и потратить на это месяц-другой, за чтением литературы по векторной алгебре-геометрии. И не подумайте что я Вас пугаю, говорю я это по тому, что после того, как я доделаю пример, Вам самим придется проделать титанический труд. Оптимизировать код ( я скажу что нужно сделать ), наладить иерархию отображения ( если проверять с сотнями стен в массиве 60 раз за кадр, то все упадет, нужно будет придумать и сделать так, чтобы проверялось только с тем, что находится в списке отображения ). И делать все это за Вас я не буду, так-как займет это пару дней и по сути это будет микро-физический движок для игр вида сверху. В Nape это уже все есть...


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

Добавлено через 7 минут
Theoryofgames, персонаж двигается на 360 градусов стоя всегда в центре.
Стены не только коробка, а еще и везде. И получается, что персонаж может боком подойти к стене, а может и стена боком под глом зайти
Нативные проверки тут не подходят.. Хотя, вот сейчас я подумал и мне кажется, что если оставить мой контейнер с точками и отказаться от своей идеи, где я хотел каждую точку проверять на принадлежность к выпуклым многоугольникам, то скорее всего hitTestPoint победит....
1
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
09.06.2014, 00:54  [ТС]
bus, Да, мне это нужно и желание есть. Буду благодарен за оказанную помощь)
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
09.06.2014, 01:07
Завтра обязательно в перерывах сделаю. До завтра!
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.06.2014, 09:04
Цитата Сообщение от bus Посмотреть сообщение
ЛУЧШИЙ физический движок Nape
Откуда такая информация?
Цитата Сообщение от bus Посмотреть сообщение
если проверять с сотнями стен в массиве 60 раз за кадр, то все упадет, нужно будет придумать и сделать так, чтобы проверялось только с тем, что находится в списке отображения
Как все сложно. Задача вообще может решаться без отображения (в зависимости от входных данных).
Допустим стены и пр. окружение генерируется программно (судя по тому, что ТС проверяет каждую стену отдельно это может соответствовать истине). Даже не важно что и как, важно, что бы был массив объектов с известными координатами. Пусть это будут ячейки с координатами и параметром занято/свободно. Соответственно при движении персонажа в какую-то сторону мы знаем в какую ячейку он может перейти (при движении по диагонали это 2 ячейки). В результате нам необходимо проверить максимум 2 ячейке,а не перелопачивать их целый массив. Это гораздо проще. Даже если реализовано не совсем так - к такому положению можно все равно свести, при этом пусть не будет у нас 1-2-х ячеек, но их все равно будет гораздо меньше, чем все.
А вот стены относительно сцены движутся или персонаж - это вопрос исключительно отображения.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
09.06.2014, 20:19
MrDead, жутко извиняюсь за неоправданные надежды, но я лучше признаю, что у меня не получается,
чем буду продолжать делать монстра.
И дело не в том, что не получается, а в том, что я не могу делать неправильно! Мне это совесть не позволяет.

Послушайте TanaTiX'а, он полностью прав! Мой вариант только время Ваше потратит и мои нервы,
так-как я его делаю, а у меня сразу в голове включается, что делаю я неправильно. Нельзя Ваш пример как пример,
я делаю его и понимаю, что если сделаю "на отстань", то он Вам все сознание поломает. А если делать как нужно,
то я понимаю, что у меня время на это нет, так-как вчерашний пример на 4 точках не работает, на поворотах проваливается. на 8, тоже! Их нужно сделать минимум 12 на квадрат, а это, как уже сказали, извращение.

Добавлено через 3 часа 41 минуту
Все не как не могу забыть и в очередной нападок мыслей, когда начал оправдывать себя, то понял, что даже в
совете допустил ошибку! Не тайлы, а графы!
TanaTiX, я никогда не работал с графами, точнее, в самом начале делал что-то невнятное...
Посоветуйте лучшие по Вашему мнению статьи и готовые решения, чтобы изнутри посмотреть на них.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.06.2014, 20:26
bus, почему все нужно сводить к графам? Чем тайлы не устраивают? А на счет статей, так я такие ссылки не храню. Когда-то читал в интернетах, общую мысль запомнил, а дальше самостоятельно.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
09.06.2014, 20:48
TanaTiX, а это разные вещи?) Графы, это математические классы, к которым привязывают виды и уже дальше с ними работают.. Они помогают в поиске путей, сортировке видов и возможно ещё и ещё чего-то.
Но что тогда такое тайлы? Вот на сколько я на сейчас могу себе объяснить понятие тайл, то это всего лишь квадратик пикселей, рисунок. Если исходить из ещё большей фантазии, то весь игровой мир поделен на кусочки-тайлы... Но ведь тайлы это же рисунки, как ими можно считать? Чего я пока не знаю?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.06.2014, 21:55
bus, тайлы удобно представить как пиксели - т.е. прямоугольные области. При этом рядом с пикселем с координатами (0,0) будут пиксели с координатами (0,1) и (1,0). Т.е. имеем четкую пространственную структуру. Касательно графов (на сколько я знаю, т.к. реально с ними работать и не приходилось), то их соседи могут отличаться, как количество соседей, так и условное расстояние до них, в то время как в случае с тайлами расстояние между ними постоянно.
Описание графа на вики. Там еще картинка наглядная
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2014, 21:55
Помогаю со студенческими работами здесь

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

Столкновение
if ((obj1.x + obj1.width &gt;= obj2.x) &amp;&amp; (obj1.x &lt;= obj2.x + obj2.width)) XColl = true; if ((obj1.y + obj1.height &gt;= obj2.y) &amp;&amp; (obj1.y &lt;=...

Столкновение
Здравствуйте. У меня возникла проблема. Я хочу сделать так чтобы при столкновение он как бы подбирался(например оружие). Для начала...

столкновение
Ф ребята, я вот хочу написать примитивную игру, типа гонки(так сказать) на С++, но никак не могу реализовать сталкивание(((... Посмотрите...

Столкновение
Есть несколько предметов. Я одел на каждый BoundingBox и на обьект которым я управляю. Только вот проблема, столкновение отрабатывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru