|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
Как сделать столкновение объектов?24.03.2024, 21:02. Показов 6333. Ответов 70
Метки нет (Все метки)
Здравствуйте мне нужно сделать столкновение объектов через функцию. Вот пример варианта, что нужно получить.
Я для этого специально написала функцию hitTest. Выше пример это обычный вариант где сравниваются по оси координат столкновения граней. Через hitTest у меня фиксируется только столкновение когда объект находиться внутри. Пример на gif-анимации. Как проверять грани и запускать hitTest? В прошлый раз мне не ответили поэтому я код изменила и сделала более легкую версию. Здесь используются функции - Transform - setTransform. Все это важно для проверки столкновения. Вот код, чтобы протестировать достаточно скопировать, сохранить в html файл и загрузить в браузере. Никакие библиотеки дополнительно подключать не нужно.
0
|
||||||
| 24.03.2024, 21:02 | |
|
Ответы с готовыми решениями:
70
Непростое столкновение объектов на Canvas Как определить столкновение объектов Столкновение объектов |
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 07.06.2024, 20:23 [ТС] | |
|
8Observer8, Изучила новую библиотеку Pixi JS и создала пример столкновение объектов, где при сильном ударе сфера разбивается. Пример гифки.
Прежде чем удалось сделать это, я изучила основы, то что пригодиться конкретно в моем примере. Все это я добавила в архив, который прикреплен к посту. Вот список. 1. Добавление картинки 2. Рисование окружности 3. Рисование квадрата 4. Добавление масок, чтобы создать эффект осколков. 5. Рисование линии moveTo и LineTo, чтобы создать стены. 6. Создание картинок циклом. Чтобы при сильном ударе создать несколько сфер и наложить на них маски. 7. Работа с мышкой перетаскивание объекта. 8. Установка точки регистрации, у объекта. По умолчанию верхний левый угол, при использовании свойства rotation объект будет крутиться вокруг этого угла, также при захвате мышкой будет происходить смещение. Левый угол окажется у курсора. Чтобы избежать этого нужно установить точку регистрации у объекта делается это так "obj.anchor.x = 0.5; obj.anchor.y = 0.5;" Посмотреть пример можно в папке 3_ОbjectRegistrationPoint, там происходит вращение вокруг центра, чтобы вернуть параметры по умолчанию, нужно закомментировать строчки "obj.anchor.x = 0.5; obj.anchor.y = 0.5;". 9. Пример удар окружности об стену 8_CircleCollision. 10. ФИНАЛ: удар сферы об стену. При сильном ударе сфера рассыпется на мелкие осколки папка FINAL_collisionball. Все примеры находятся отдельно в папках. Исходники: https://disk.yandex.ru/d/S_eN9akd81yadQ
1
|
|
| 08.06.2024, 13:08 | ||
|
Katerina1993, исходники надо всегда прикреплять к сообщению, если смысл сообщения в том, чтобы поделиться своими достижениями, потому что вы можете случайно удалить их из хранилища и тогда сообщение становится бессмысленным. В правилах форума есть пункт 4.11:
0
|
||
| 08.06.2024, 21:50 | |||||||||||||||||||||||||||||||||||||||||
|
Современный способ подключения Pixi.js 8 через ES6-модуль
У вас во всех проектах, даже в больших, весь код находится в одном файле "index.html". Неудобно изучать и дорабатывать код, когда он находится в одном огромном файле. Надо разбивать проект на файлы. Так в них проще будет ориентироваться. Покажу современный способ подключения крайней версии Pixi.js v8.1.6, как ES6-модуля, то есть использование ключевого слова "import" в отдельном JavaScript-файле. На UNPKG есть файл "pixi.min.mjs", который представляет из себя ES6-модуль. Эту ссылку и имя (в данном случае, имя - это "pixi.js") можно добавить в "importmaps" в файле "index.html":
index.js
Фигуры на Pixi.js 8.1.6 Прямоугольник можно нарисовать двумя способами. Первый способ - drawRect/fill:
0
|
|||||||||||||||||||||||||||||||||||||||||
| 10.06.2024, 21:14 | ||||||||||||||||||||||||||||||||||||
|
В архиве "PixiExample.zip" выше в первой папке находится пример рисования: линии, прямоугольника, круга и треугольника, но используется Pixi.js версии 4.6.1, которая была создана в 2017 году. Сейчас актуальна версия 8.1.6. В сообщении выше я попытался перевести на восьмую версию, но оказывается методы: "drawRect", drawCircle" и "lineStyle" были признаны deprecated в версии 8.0.0. Это можно увидеть в документации если ввести названия этих методов в строке поиска в левом верхнем углу: https://pixijs.download/v8.0.0... l#drawRect Если использовать TypeScript, то сообщения о deprecated методах будут выводиться в консоль при компиляции. Вместо перечисленных методов надо использовать: "rect", "circle" и "setStrokeStyle".
Фигуры на Pixi.js 8.1.6 Выбрать цвет можно с помощью онлайн-калькулятора: Линия заданной толщины и цвета: https://plnkr.co/edit/c513akxqXKf2eNLe?preview
0
|
||||||||||||||||||||||||||||||||||||
| 16.06.2024, 13:29 | ||||||||||||||||
|
Мне не понравилась библиотека Pixi.js 8, потому что она содержит баг (как я считаю), но даже не в баге дело, а в том что на официальном Discord никто не попытался помочь или хотя бы подсказать, что это возможно баг. Я попытался использовать методы save() и restore(), которые являются аналогами методов с тем же названием из Canvas API. Я сделал рисование коллайдеров для @box2d/core. Повёрнутый квадрат падает на платформу, но работает неверно. Я создал issue для Pixi.js 8: https://github.com/pixijs/pixijs/issues/10632
Демка проблемы в песочнице index.html
0
|
||||||||||||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 18.06.2024, 21:23 [ТС] | |
|
8Observer8, я библиотеку Pixi.js использовала, только потому что там есть свойства для создрания маски. Маска накладывается, чтобы создать эффект разбивания сферы, как в посте 61. Можете переписать на Phaser, если нужно. Там тоже есть возможность создавать маски. Я просто выбрала Pixi для пробы.
Библиотеку Box2D не использовала, поэтому о всех багах не знаю. Разумеется когда буду использовать Box2D выберу подходящий движок для рисования и добавления объектов.
0
|
|
| 03.07.2024, 12:46 | ||||||||||||
1
|
||||||||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 10.07.2024, 05:12 [ТС] | |
|
8Observer8, cделала код на JS. Систему частиц. При столкновении небесных тел с героем запускается система particles.
На самом деле я переписала старую библиотеку на Flash. Цель: понять можно ли переписать AS 3.0. на JS, чтобы он полностью соответствовал Flash (ActionScript 3.0.). Результат: При реализации пришлось отказаться от интерфейсов, я не знаю как их сделать на JavaScript, зато получилось сделать override переопределения метода из базового класса. Используется при наследования, здесь вместо override применила __proto__. Чтобы заменить некоторые функции Flash пришлось подключить дополнительные библиотеки. 1.clasess.js – для get и set параметров. 2.easeljs.js – библиотека для добавления объектов. 3.Event.js 4.EventDispatcher.js 5.Point.js Полностью библиотеку Flash я реализовывать не стала. Сделала только те функции которые используются в коде. Вот исходники на JS ExampleCollision.zip. В архиве три примера. 1.Отношение к звездопаду не имеет. Просто протестировала zimjs. ZimJS написана как дополнение к EaselJS. В этом пример окружность сталкивается с квадратом. Для этого мышкой нужно перетащить круг на квадрат. Используется функция hitTestCircleRect для Collision. 2.Перемещение прямоугольника кнопками клавиатуры. При столкновении с окружностью прямоугольник перекрещивается. Нужно чтобы фиксировать столкновение с звездами. Способ Rectangle To Circle подходит, так как звезды имеют форму окружности. 3.Сам зведопад. Исходники на Flash. Для сравнения. star.zip Очень помогла справка от Adobe: Сопоставление фрагментов кода ActionScript и HTML5
1
|
|
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 15.07.2024, 02:44 [ТС] | ||||||
|
Следующий пример столкновение объектов с помощью функции distance. Пришлось изменить немного функцию Point библиотеки Easeljs.
Для столкновения используется Math.sqrt и когда дистанция до объекта сокращается до установленного значения в переменных, то происходит collision. Суть игры: собрать весь мусор в городе и отвести в специальное место. Пример игры ниже. Встречается всего три типа мусора – пакеты, бутылки и банки. Для каждого предмета свой контейнер. Сколько осталось мусора показано на панели сверху, там же можно увидеть время игры. За один раз мусоровоз может увести 10 предметов. Игра заканчивается, когда весь мусор будет собран. Мусор разбросан только по дорогам, внутри кварталов где дома мусора нет. Для этого в районе были размещены специальные блоки и написали условие с hitTestObject. Где проверяется размещение предмета и игнорируется жилой регион.
В предыдущем примере я переводила код с Flash на Html5. Среди своих файлов случайно нашла Колин Мук. ActionScript 3.0. Подробное руководство – исходники https://disk.yandex.ru/d/suQ5EmdOa3_D5Q. Может кому пригодиться. Подойдет для практики, чтобы перевести flash на html5 и посмотреть результат. Там есть interface и implements, но как они работают на html я так и не поняла.
0
|
||||||
| 15.07.2024, 12:45 | ||
0
|
||
| 09.11.2024, 15:32 | ||
|
Если будет желание и время, то перепишите следующие примеры с Flash и Box2D на IvankLib: Lesson 1.1 - Introduction to Chapter 1 - http://youtu.be/2NvNoBUNIX0 Lesson 1.2 - Disclaimers, thanks, and comments - http://youtu.be/jhKWFgvR8No Lesson 1.3 - What you're gonna need... - http://youtu.be/rB_WrFt4-5s Lesson 1.4 - Understanding Box2D - http://youtu.be/95lW-zWkZPE Lesson 1.5 - The kinda long and boring lesson on setting everything up - http://youtu.be/MDtGGyI8OTc Lesson 1.6 - Creating the world and getting to know some classes - http://youtu.be/WzIacPkLtIc Lesson 1.7 - Defining the size of the universe - http://youtu.be/vYksP9ctHMI Lesson 1.8 - A quick digression about units - http://youtu.be/CnCS2NeBZ0E Lesson 1.9 - Finishing up our b2World object - http://youtu.be/lVtVKeGiBco Lesson 1.10 - If you're following along and getting errors... - http://youtu.be/7yqEjjFfrIE Lesson 1.11 - How do you make a body? - http://youtu.be/h6TozLhho80 Lesson 1.12 - Creating our first shape definition - http://youtu.be/sbbsvKMMr_w Lesson 1.13 - Finishing up our floor - http://youtu.be/OSwRv4Nzdz0 Lesson 1.14 - Creating the walls - http://youtu.be/iCLP-Ok1ab4 Lesson 1.15 - Creating our falling crate - http://youtu.be/31sVPYW3icE Lesson 1.16 - Making our world update over time - http://youtu.be/_MbfGRD8Ibk Lesson 1.17 - Let's Get Visual, Visual - http://youtu.be/KNm8fdkrFuE Lesson 1.18 - Adding lots of crates! Whee! - http://youtu.be/1d72y6oX9nc Lesson 1.19 - Experimenting with our values - http://youtu.be/2PCeecp3vv4 Lesson 1.20 - The difference between a shape and a body - http://youtu.be/s_t0MaFDUsM Lesson 1.21 - Defs, OrientedBoxes, and Coordinates - http://youtu.be/g0FR0WCVFFA Lesson 1.22 - Conclusion - http://youtu.be/Di5rrYHhN6g Chapter 2: Making Puggle Lesson 2.1 - Making a real application -- an Introduction to Chapter 2 - http://youtu.be/85FoF_w-HOM Lesson 2.2 - Everything we did in Chapter 1 in about six minutes - http://youtu.be/SPAEPPGClQg Lesson 2.3 - Getting a Sprite to move like a Body - http://youtu.be/fyDGU0haNcg Lesson 2.4 - Introducing the Actor Class! - http://youtu.be/deA4MMsuOHk Lesson 2.5 - Creating our first Actor class - http://youtu.be/7e7iF2_Dr0o Lesson 2.6 - Creating the BallActor class - http://youtu.be/ouEkR8Wlg_E Lesson 2.7 - Creating the PegActor, Part 1 - http://youtu.be/5wQIrISylxs Lesson 2.8 - Creating the PegActor, Part 2 - http://youtu.be/268gpaMz0XE Lesson 2.9 - Adding all those pegs to the world - http://youtu.be/bjeiNwIv5DY Lesson 2.10 - The ArbitraryStaticActor... as exciting as it sounds! - http://youtu.be/HJ8HeREdjmM Lesson 2.11 - Finishing the ArbiStaticActor, and adding some walls - http://youtu.be/FZ9SdB4M9og Lesson 2.12 - Adding some ramps! Yay! - http://youtu.be/G0sqizu4XqQ Lesson 2.13 - Discussion Questions, like "Why isn't Todd a better coder?" - http://youtu.be/5pxRiw7wuA4 Lesson 2.14 - More Discussion Questions that you probably weren't wondering about - http://youtu.be/Q9JHCTqsY0E Lesson 2.15 - Getting to know the b2ContactListener - http://youtu.be/FklxMpYi8ww Lesson 2.16 - Figuring out who bumped into who - http://youtu.be/OBVxTSJjRGs Lesson 2.17 - Making a peg light up! And some warnings... - http://youtu.be/eP4T8BE7qq0 Lesson 2.18 - How to remove an Actor (insert Hollywood-themed joke here) - http://youtu.be/MGX8GOmzJ8A Lesson 2.19 - Finishing that Actor's destroy() function - http://youtu.be/CgK3IgYnua4 Lesson 2.20 - Removing our ball and creating a custom event - http://youtu.be/tOgNzVRe_po Lesson 2.21 - Removing those PegActors we took so long to make (sigh) - http://youtu.be/YT34taQO3QI Lesson 2.22 - Our game's got a lotta balls. - http://youtu.be/KnEODTxkg54 Lesson 2.23 - Creating the BonusChuteActor class - http://youtu.be/0hQ8CJT2kxc Lesson 2.24 - Adding a sensor to our BonusChute - http://youtu.be/MZLizo67dA0 Lesson 2.25 - Getting a platform to move -- the wrong way - http://youtu.be/Kiy28DvQxnA Lesson 2.26 - Getting a platform to move -- the right way - http://youtu.be/C1sgWy07Ek4 Lesson 2.27 - Fixing bugs in our platform and using bullets - http://youtu.be/WBvAnaxJ9KI Lesson 2.28 - Introducing the camera! - http://youtu.be/PLcsxKRPVbw Lesson 2.29 - Making our camera dumbly zoom in - http://youtu.be/ess3kNVvvF8 Lesson 2.30 - Tracking our ball and Goal Peg - http://youtu.be/2oAcFim65is Lesson 2.31 - Zooming in, the smart way - http://youtu.be/JMTb0PJp1_w Lesson 2.32 - How to control time! (Katana not required) - http://youtu.be/K6Oh-8Yux_8 Lesson 2.33 - Cleaning up, part 1: Removing the flicker - http://youtu.be/DsGJ41ERIKE Lesson 2.34 - Cleaning up, part 2: Allowing multiple goal pegs - http://youtu.be/H_I0gpqvb6E Lesson 2.35 - Creating the aiming line, part 1 - http://youtu.be/v0HHg3nrWCE Lesson 2.36 - Creating the aiming line, part 2 - http://youtu.be/pv-VLmurMo0 Lesson 2.37 - Tweaking the settings - http://youtu.be/dntwtnGDDdY Lesson 2.38 - Making a rotating shooter turret thing - http://youtu.be/BIIYnGseBTM Lesson 2.39 - Oops! Fixing one bug with the shooter - http://youtu.be/1i7H2B7hPOM Lesson 2.40 - Making a smooth camera zoom through TweenLite - http://youtu.be/R98ER9iREW8 Lesson 2.41 - Smoothing the zoom out and slow down moments - http://youtu.be/led40OjZtjI Lesson 2.42 - Making the pegs fade out - http://youtu.be/iVuJhoTO2dw Lesson 2.43 - How to NOT make Peggle - http://youtu.be/24Rm18C5E_I Lesson 2.44 - Turning our static pegs to moving pegs - http://youtu.be/ZU5P7kPdURM Lesson 2.45 - REALLY turning our static pegs into moving ones - http://youtu.be/7lHoKW2j1o4 Lesson 2.46 - Getting our chute to follow our mouse - http://youtu.be/Pc6PJha93cI Lesson 2.47 - Making our pegs react more realistically, part 1 - http://youtu.be/7AQv88f14-M Lesson 2.48 - Even more realistic pegs, ApplyForce and ApplyImpulse - http://youtu.be/IgUr4xrcTEI Lesson 2.49 - Normals and crazy mathy stuff - http://youtu.be/JruODUnV2o4 Lesson 2.50 - Final to-do list and conclusion - http://youtu.be/pUZ-PVCquOI
1
|
||
| 09.11.2024, 15:32 | |
|
Столкновение объектов на странице JavaScript: столкновение объектов Как сделать столкновение объектов? Как сделать, чтобы столкновение объектов было абсолютно неупругим Столкновение объектов. Как правильно реализовать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой
Зрите в корень - монополизация на разработку программ. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|