Домой › Форумы › Для программистов › Как собрать свойства от нескольких объектов?
- В этой теме 14 ответов, 4 участника, последнее обновление 5 лет, 3 месяца назад сделано sungreen.
-
АвторСообщения
-
14 августа, 2019 в 02:47 #14210AndreyУчастник
Здравствуйте. Как можно собрать свойства от нескольких объектов одновремено для дальнейшей обработки этих свойств в пазлах логики?
Пример: в сцене присутствуют некоторые объекты, но они спрятаны через пазл HIDE. Потом эти объекты будут вызваны и показаны через пазл Show, но это произойдет для каждого объекта независимо и в разное время. Каждый объект покажется при соблюдении своего условия. Например каждый будет отображен при нажатии отдельной кнопки. Нужно зафиксировать событие отображения всех элементов и далее обработать его пазлами логики. Задача: в сцене присутствуют, но спрятаны 4 части одного предмета. Пусть это будут 4 части яблока. Но они поочереди вызываются отдельными кнопками на которых прикручен пазл show. Как только отобразится последняя часть яблока, оно будет выглядеть как абсолютно целое. Последовательность заполнения дольками от 1-й до 4-й может быть любая. По окончании сборки нужно будет вывести аннотацию и сменить материал.
Мне не понятно как создать переменную для этого сценария. Привязать переменную можно к положению объектов, к их видимости или к материалу. Или возможно есть другой способом обработать это в пазлах логики?
Сбор свойств от одного объекта понятен и не составляет труда. Но когда их 4 и события происходят в разное время, тут я запутался. Подскажите пожалуйста направление мысли. Заранее благодарю.14 августа, 2019 в 05:56 #14213sungreenУчастник>> Нужно зафиксировать событие отображения всех элементов и далее обработать его пазлами логики.
>> Мне не понятно как создать переменную для этого сценария.если правильно понял:
… это может быть переменная es = e0+2*e1+4*e2+8*e3, где e0..e3 это состояние отображения отдельного элемента (0 – не отображается, 1 – отображается) …
… тогда es == 1+2+4+8 == 15 условие при котором отображаются все 4 элемента …
или
… можно создать словарь в котором хранить переменную состояния для каждого элемента и обрабатывать циклом …14 августа, 2019 в 09:21 #14215Mikhail LuzyaninStaffЛучше использовать словарь, или даже лист (как мы делали всё время раньше до того как был поддержаны словари), в листе более простая структура и каждый слот будет по порядковому номеру соответствовать какому либо элементу.
Co-founder and lead graphics specialist at Soft8Soft.
14 августа, 2019 в 15:07 #14224AndreyУчастникМихаил, попробовал и так и так, но у меня видимо не хватает знаний для правильного завершения пазла. Для теста суммы я использовал аннотацию. В аннотации я вижу только NaN. Я так понял что это not a number. Можно попросить вас сделать простой рабочий пример кода на любых объектах, для понимания самого синтаксиса?
14 августа, 2019 в 20:43 #14227sungreenУчастниквот пример проекта, нужно нажимать 1,2,3,4
или даже так 1 1 2 2 3 3 4 4 1 2 3 4 4 3 2 1
пример15 августа, 2019 в 15:27 #14234AndreyУчастникСпасибо за ход мысли по сложению чисел. Через этот алгоритм я сделал то чего добивался. А вот со словарями я так и не разобрался. Но это дело будущего. Спасибо да ваш ответ.
15 августа, 2019 в 19:56 #14241sungreenУчастникпостарался упростить пример со словарем
пример2INIT_SLICE и INVERT_SLICE для установки начального и инверсии статуса
статус -1 (не отображать) и 1 (отображать), изменение статуса простым умножением на -1 (возможно когда-нибудь в Puzzles появятся логические переменные)
далее создаем словарь и делаем в нем записи для 4 долек с привязкой к кнопкам (es1 к 1 … es4 к 4)
далее скрываем все дольки, записанные в словарь (можно было бы скрыть в blender)
далее следим за кликами и если 1 … 4, то находим в словаре дольку привязанную к кликнутой клавише и меняем у нее статус
по ходу считаем сколько долек кликнуто простым суммированием статусов всех долек и если сумма равна 4 (4 дольки кликнуто, то есть имеют статус 1), то отображаем фрукт es
Вложения:
Вы должны войти для просмотра вложений.16 августа, 2019 в 10:58 #14251AndreyУчастникТак стало значительно понятнее. Спасибо, Sungreen!
19 августа, 2019 в 20:47 #14274AndreyУчастникSungreen,здравствуйте. Разбираю ваш второй пример. Там нет пазлов в проекте. Они отмечены коричневым, как будь-то там ничего нет, но проект работает. Логика явно присутствует. Как такое могло случиться? Могу я с вами списаться вне форума- почта, телеграмм, вайбер?
Вложения:
Вы должны войти для просмотра вложений.20 августа, 2019 в 05:16 #14277sungreenУчастникиз архива распакованы файлы visual_logic.* (они есть в архиве и во вложении)?
20 августа, 2019 в 19:56 #14284AndreyУчастникSungreen, не могли бы Вы прислать мне на почту elektropochta108@gmail.com проект со вторым примером в котором открываются пазлы?
20 августа, 2019 в 22:15 #14285sungreenУчастникда, выслал …
но к сожалению письмо заблокировано gmail со следующим пояснениемКакие типы файлов блокируются в Gmail
Письмо в Gmail может быть заблокировано по ряду причин. Чтобы предотвратить распространение вирусов, в Gmail запрещено передавать сообщения с исполняемыми файлами или подозрительными ссылками.вот ссылка нa ydisk https://yadi.sk/d/XGICRr7l-ZMXlA
21 августа, 2019 в 10:59 #14287Yuri KovelenovStaffGmail запрещено передавать сообщения с исполняемыми файлами
Да, Gmail не любит джаваскрипты, включая запакованные в архив.
2 сентября, 2019 в 20:02 #14351AndreyУчастникРазобрался со словарями. Удобная, простая функция и свою задачу я решил. Спасибо за наводку, Sungreen. Но вашем последнем примере по ссылке на яндекс диск, так же как и в предыдущих- пазлы отсутствовали. Пазлов в App Manager нет и иконка не зелёная, а коричневая- не активная. Но тем ни менее опять вся логика присутствует и пример работает. Использую 2.14.0 версию. Как такое может быть?
4 сентября, 2019 в 06:56 #14358 -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.