Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17

Пройти сквозь выбранные объекты

21.10.2018, 12:19. Показов 7536. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть десять Объектов например кубики и две сферы, мне надо что бы первая сфера могла пройти сквозь любые несколько выбранных кубов, в то время как вторая сфера не может пройти через те же кубы, а через выбранные для себя кубы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2018, 12:19
Ответы с готовыми решениями:

Объекты проходят сквозь друг друга
Я создаю игру, в которой надо ловить падающие мячи в корзинку, но столкнулся с проблемой, что мячи лежащие внутри корзины проскакивают...

Сделать так, чтобы определенные объекты могли проходить сквозь коллайдер, в то время как игрок - не мог
Недавно начал изучать Unity и нужно сделать так чтобы определенные обьекты могли проходить сквозь коллайдер, в то время как игрок не мог....

Сквозь роутеры, Пройти сквозь последовательные роутеры
Всем доброго времени! Проблема в следующем имеются 4 модема (DSL) ASMi-51 для связи до 6 км. с двумя интерфейсами WAN и LAN. Связываем...

12
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
21.10.2018, 14:15
Цитата Сообщение от Джиби Посмотреть сообщение
У меня есть десять Объектов например кубики и две сферы, мне надо что бы первая сфера могла пройти сквозь любые несколько выбранных кубов, в то время как вторая сфера не может пройти через те же кубы, а через выбранные для себя кубы
Для настройки коллизий используются слои - Layers:
см здесь https://docs.unity3d.com/Manual/Layers.html
и здесь https://docs.unity3d.com/Manua... ision.html
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
21.10.2018, 22:43  [ТС]
о слоях знаю, использовать их не выйдет. так как объектов будет десятки тысяч, которые постоянно меняются, а слои нужно задавать заранее...
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
21.10.2018, 23:01
Цитата Сообщение от Джиби Посмотреть сообщение
о слоях знаю, использовать их не выйдет. так как объектов будет десятки тысяч, которые постоянно меняются, а слои нужно задавать заранее...
Тогда опишите задачу более детально, до мелочей.
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
21.10.2018, 23:21  [ТС]
задачу я описал выше, подробнее некуда, только объектов не 10, а 10000,
Но использовать я это буду для игроков. Я работаю над сетевой видимостью игроков, если мы не видим игрока надо надо проходить сквозь него. например 4 игрока, 1 2 3 друг драга не видят, 3 4 видят друг друга. 1 2 игрок стоят вместе, и если 3 игрок пройдет через них коллайдер застрянет между 2 игроками, 4 игрок будет видеть что три (1 2 3) игрока стоят вместе, хотя 3 уже убежал.
поэтому пока ищу способ как отключить прохождение сквозь друг друга для игроков которые не видят друг друга
Слои можно задавать через скрипт? я вроде читал что нет, я думал это бы подошло
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.10.2018, 02:45
Джиби,
Не очень понятно откуда у вас на сцене коллайдер игрока, если самого игрока не видно.
Но в любом случае, задавать слой из скрипта можно.
Создайте два слоя, один - для видимых игроков, другой - для невидимых.
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
22.10.2018, 03:14  [ТС]
уперся в ограничение 32 слоя. Я говорю о сетевой видимости игрока, если даже игроки не получают данные от других игроков, на сервере они все друг для друга видимы и сталкиваются, поэтому как я написал выше 4 игрок увидит не то что у 3 игрока, а то что на сервере. 3 игрок играет нормально, а его коллайдер где то застрял или другим путем пошел...3 игрок начнет неверные данные получать, еще и остальные ахинею увидят=)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.10.2018, 08:47
Цитата Сообщение от Джиби Посмотреть сообщение
на сервере они все друг для друга видимы и сталкиваются
Вы можете воспользоваться методом Physics.IgnoreCollision, который нужно вызвать для всех пар игроков, которые друг друга не видят.
Но в целом я бы подумал о пересмотре архитектуры в целом, потому что я не представляю как все это будет работать для десятка тысяч игроков.
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
22.10.2018, 10:02  [ТС]
спасибо, надо подумать, моя начальная цель что бы игроки при появление друг друга не видели, если использовать другой сервер например Darkrift2 то там это легко решаемо, но мой опыт мне не позволяет...решил юнити изучать а тут такие грабли
0
C# .NET Программист
 Аватар для Ислам2001
34 / 22 / 5
Регистрация: 11.11.2016
Сообщений: 426
25.10.2018, 16:57
Тебе нужно добавить триггеры к кубам. И когда сферы с определенным тегом будут в него входить, то удаляй Rigidbody со сферы.
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
26.10.2018, 00:23  [ТС]
мне нужно что бы между игроками которые не видят друг друга в сети прекращались столкновения, я не нашел нужных функций в движке unity. если говорить о других, то во всех это учтено например ummo с своей сетевой системой, со слов разраба это "Area of Interest"
самое ближайшее что нашел это Physics.IgnoreCollision, но это не поможет, второй параметр должен быть массивом или скорее списком, а в лучшем случае немного другая логика.
Physics.IgnoreCollision я не знаю как его заменить на то что мне надо.

Добавлено через 19 минут
Physics.IgnoreCollision коллайдер1 игнорирует выбранный коллайдер2,
мне надо что бы коллайдер1 игнорировал все кроме выбранных коллайдеров[] или list в который будут добавляться другие игроки в зоне видимости или удаляться при выходе из зоны.
я бы даже заплатил если кто может помочь в этом, а пока Darkrift2 изучаю что бы время не терять, все равно не знаю как
0
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
26.10.2018, 09:22
Цитата Сообщение от Джиби Посмотреть сообщение
мне нужно что бы между игроками которые не видят друг друга в сети прекращались столкновения
Что это значит? Не видят друг друга в сети? Это как вообще?

Добавлено через 6 минут
Цитата Сообщение от Джиби Посмотреть сообщение
мне надо что бы коллайдер1 игнорировал все кроме выбранных коллайдеров[] или list
Заведи список всех коллайдеров и при создании нового объекта пробегайся по списку и добавляй в игнор что тебе нужно.
0
0 / 0 / 0
Регистрация: 30.04.2018
Сообщений: 17
26.10.2018, 11:09  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public override bool OnRebuildObservers(HashSet<NetworkConnection> observers, bool initial)
    {
        switch (checkMethod)
        {
            case CheckMethod.Physics3D:
            {
                    if (!Physics.CheckSphere(transform.position, visRange, castLayers))
                    {
                        //наблюдатели были очищены выше, и поблизости ничего нет ... возврат короткого замыкания
                        return true;
                    }
 
                    var hits = Physics.OverlapSphere(transform.position, visRange, castLayers); //перебираем все сферы что столкнулись или внутри друг друга в hits
                    var playerInfo = GetComponent<PlayerInfo>(); //здесь получаем PlayerInfo для текущего игрока
                    foreach (var hit in hits)
                    {
                        
                        var hitPlayerInfo = hit.GetComponentInParent<PlayerInfo>();// здесь получаем PlayerInfo для игрока, который был найден в сфере.
                        if (hitPlayerInfo != null && hitPlayerInfo.RoomId == playerInfo.RoomId)
                        {
                            // (если объект имеет соединение с клиентом, то это игрок)
                            var uv = hit.GetComponentInParent<NetworkIdentity>(); 
                            if (uv != null && uv.connectionToClient != null)
                            {
                                observers.Add(uv.connectionToClient);
                            }
 
                        }
 
                    }
                    
                return true;
            }
я про эту видимость NetworkProximityChecker

Добавлено через 9 минут
видимость можно не трогать, независимо от нее у всех игроков есть контроллер игрока который добавляет коллайдер капсулы для расчета физики столкновений и т.д. если можете в виде кода покажите, как игроку игнорировать коллайдеры других игроков кроме выбранных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2018, 11:09
Помогаю со студенческими работами здесь

Может ли шар радиуса R пройти сквозь ромбовидное отверстие с диагоналями P и Q?
1. 1.Ромб и шар. Может ли шар радиуса R пройти сквозь ромбовидное отверстие с диагоналями P и Q? Var R, Q, P, B:integer; ...

Как сделать чтобы два объекта не проходили сквозь а врезались и не могли пройти
Есть скажем две кнопки и при нажатии кнопок на клавиатуре (w,a,s,d) одна из кнопок двигается и она должна сталкиваться со 2-й кнопкой а не...

Непроходимость сквозь объекты
Здравствуйте, уважаемые. Недавно скачал такую шнягу, как Rad Studio XE 10. Там можно делать 3д игры буквально в 2 клика! Так вот, значит...

Хочу просвечивать линии сквозь непрозрачные объекты
Ситуация такая: я рисую довольно сложную сцену, состоящую из нескольких незамкнутых непрозрачных поверхностей, а также из нескольких...

Как программно сгруппировать выбранные объекты в Word
В Word есть набор объектов типа Shape нужно среди них выбрать несколько по определенному признаку и сгруппировать в 1. Для...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru