Вопросы по созданию игр.

Список разделов Геймдев в Blender Игровой движок Blender

Описание: Все вопросы и обсуждения, касающиеся BGE
Модераторы: exooman, denis8424

  • 1

Сообщение #1 exooman » 25.01.2014, 14:45

В этой теме помогаем друг-другу разбираться в игростроении на движке BGE.
Внимание, прежде чем задать вопрос, просмотрите темы:
Blender Game Engine FAQ
Blender Game Engine примеры
Полезные ресурсы по BGE


Пожалуйста, выкладывайте бленд-файлы, изображения и другие ресурсы на сторонних хостингах. Приветствуется упаковывание файлов в архив, желательно в формате .7z. По возможности старайтесь использовать изображения формата .jpeg.
exooman M
Аватара
Сообщения: 1449



Сообщение #1321 Август » 28.05.2017, 08:07

jstas писал(а):Нет, код работает не так. По условию "если есть объект Cube в списке активных объектов" то срабатывает часть до else. Если "нет объекта Cube в списке активных объектов" то срабатывает часть после else. после добавления куба, он появляется в сцене (то есть выполняется условие "если есть объект Cube в списке активных объектов") и соответственно дальше хоть защелкайся мышкой, новый куб не появится.

jstas, ну вы даёте стране угля, а я-то что написал, в чём вы меня поправляете?

Я ссылку давал на свой файл Тир, вы его смотрели? В нём если нажать на пробел и удерживать его, то очередь из добавляемых снарядов будет сколь угодно длинной.
Если в сенсоре мышь установить значение пропуска в 30, то будут отдельно летящие снаряды 2-3 штуки видимы сразу, а вы пишите "хоть защелкайся мышкой, новый куб не появится".

Ладно, вынужден отвлечься на несколько дней. Появлюсь - продолжим, если, конечно, у вас не появится что-то более интересное для вас чем мой файл.
Приношу свои извинения за своё "бегство".
Август
Сообщения: 104

Сообщение #1322 jstas » 28.05.2017, 08:58

Август писал(а):jstas, ну вы даёте стране угля, а я-то что написал, в чём вы меня поправляете?

Я ссылку давал на свой файл Тир, вы его смотрели? В нём если нажать на пробел и удерживать его, то очередь из добавляемых снарядов будет сколь угодно длинной.
Если в сенсоре мышь установить значение пропуска в 30, то будут отдельно летящие снаряды 2-3 штуки видимы сразу, а вы пишите "хоть защелкайся мышкой, новый куб не появится".
а ты перечитай еще раз, только внимательно.
Причем тут твой файл Тир. Там у тебя все работает совсем по другому. Там у тебя нажал пробел, добавился снаряд и там действительно при каждом нажатии пробела будет добавляться снаряд. В обсуждаемом же нами коде при нажатии на мышку сначала запускается скрипт, затем проверяется условие и если куба нет в сцене то он добавляется и это произойдет только один раз, так как после добавления куб в сцене появится и условие добавления не будет выполняться. И хоть защелкайся мышкой, новый куб не появится

Август писал(а):else:
В этой части условия мы оказываемся, когда пустышка уже имеет некие координаты
нет, в этой части условия мы оказываемся, когда куба нет в сцене.
Август писал(а):Нажатие правой клавиши мыши провоцирует работу актуатора Edit Object принадлежащего пустышке и вынуждает добавление куба, в место нахождения пустышки.
нет, нажатие правой клавиши мыши провоцирует запуск скрипа, скрипт проверяет условие и в зависимости от условия добавляет или не добавляет куб.
А вот в тире у тебя действительно нажатие пробела провоцирует работу актуатора Edit Object.
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1323 Pslender » 28.05.2017, 14:58

На меня ноль внимания :(
Pslender
Сообщения: 3

Сообщение #1324 denis8424 » 28.05.2017, 20:23

Pslender, с помощью 2-3 актуаторов Action.https://docs.blender.org/manual/en/dev/game_engine/logic/actuators/types/action.html
единственное с чем надо повозиться, это отслеживание нажатия и отпускания клавиши на клавиатуре. Возможно с помощью дополнительного проперти.
denis8424
Аватара
Сообщения: 705

Сообщение #1325 Август » 01.06.2017, 08:49

Всем привет.
jstas писал(а):Нет, код работает не так. По условию "если есть объект Cube в списке активных объектов" то срабатывает часть до else. Если "нет объекта Cube в списке активных объектов" то срабатывает часть после else. после добавления куба, он появляется в сцене (то есть выполняется условие "если есть объект Cube в списке активных объектов") и соответственно дальше хоть защелкайся мышкой, новый куб не появится.
И поэтому если скопировать, то что после else перед else, мы и получаем при нажатии кнопки мыши новый кубик.
А, ведь верно, условие if "Cube" in objList1 криком кричит, что если куб попал в список objList1, то будет производиться присваивание значений переменным xcube и ycube координат места куба и только. Новый куб уже не будет образовываться, поскольку куб есть в списке, и он не ликвидируется из списка, как это происходит со снарядом, который ликвидируется из-за взрыва. Спасибо jstas, я так и предполагал, что ошибка из разряда очевидных глупостей, которую не замечаю. Свежий взгляд выручил.
jstas писал(а): Как ты надеюсь понял, что куб никуда не девается, а добавляется просто далеко из за "не увязанности систем координат экрана, и сцены". Т. е. добавление куба работает и этот вопрос нужно оставить пока в покое.
Деваться-то он девается и dron показал, как увидеть куда – с этим всё понятно.
А вот как увязать координаты это уже другой вопрос. dron давал ссылку на файл, нужно его копать.
Знаний пока кот наплакал, но попытаюсь. В примере вроде понятное комментирование.
Всем спасибо за помощь.
Август
Сообщения: 104

Сообщение #1326 jstas » 01.06.2017, 09:39

Август, вот посмотри файл, это я сделал по этому видео:
Спойлер
phpBB [media]
Вложения
untitled.zip
(97.51 КБ) Скачиваний: 15
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1327 Август » 01.06.2017, 14:03

jstas, взглянул, что называется краем глаза на предложенный Дроном файл moveTo, но в нём однако подход, похоже, другой. Но об этом потом. Непонятно назначение сенсора Мышь с событием Наведения курсора и контроллером "И" принадлежащие объекту Plane. Это нереализованная заготовка или она как-то используется? Я что-то с таким явлением пока не встречался. Контроллер здесь для чего, для того чтобы можно было как-то через него использовать сенсор мыши?

Изображение
На этом скрине непонятно что это за кнопка и каким образом появились блоки контроллеров и актуаторов, что это вообще такое и для чего предназначено? Может поделитесь ссылкой по которой с этими вопросами можно ознакомиться. Мне до сих пор ничего подобного не попадалось.
Август
Сообщения: 104

Сообщение #1328 dron » 01.06.2017, 16:00

Август писал(а):На этом скрине непонятно что это за кнопка и каким образом появились блоки контроллеров и актуаторов, что это вообще такое и для чего предназначено?
это вопрос скорее к автору примера так что ожидайте его ответа.
А вам сейчас дорогой мой друг нужно искать сенсоры которые связаны с мышкой и попытаться их связать со скриптом и понять как это работает.

зы даже опытные программисты не берутся за сложную многопоточность, а сенсоры как раз и есть сложнейшая многопоточность. Так что совет всем учить python и как можно меньше использовать логик брики!
Данный контент распространяется под лицензией "Creative Commons BY-SA" если не указанно иного.
http://creativecommons.org/licenses/?lang=ru
dron M
Аватара
Сообщения: 109

Сообщение #1329 Август » 01.06.2017, 18:00

jstas, посмотрел ваш файл и к предыдущим вопросам добавился ещё один. Я правильно понял что тор цепляется к курсору own.worldPosition = mouse.hitPosition?
В принципе, если в этом файле тор заменить пустышкой, то мог бы получится эффект добавления куба в место нахождения курсора (на самом деле пустышки). Однако я получил ошибку: AttributeError: 'SCA_MouseSensor' object has no attribute 'hitPosition'
Что-то я не понял, почему в файле то проходит, а то выдаёт ошибку? Вот мои строки в скрипте получения координат:
own = cont.owner # получить объект владелец контроллера: Empty
mouse = cont.sensors ["MouseMove"] # получить сенсор MouseMove с событием Курсор над любым
if mouse.positive: # если мышь перемещалась над плоскостью, то ...
own.worldPosition = mouse.hitPosition # передать её позицию пустышке
Кубы получаются во множестве. Я поставил появление их в зависимость не от наличия в списке, а в зависимость от переменной.
Вот скрин на котором "безобразие" с ошибкой проскальзывает.

Изображение

Добавлено спустя 12 минут 29 секунд:
dron писал(а):это вопрос скорее к автору примера так что ожидайте его ответа.
Может jstas создавая файл обратил внимание на появление этих бриков и кнопки, и сможет объяснить что это такое. Буду ждать.
dron писал(а):зы даже опытные программисты не берутся за сложную многопоточность, а сенсоры как раз и есть сложнейшая многопоточность. Так что совет всем учить python и как можно меньше использовать логик брики!
dron, я как раз и поставил себе почти эту задачу, т.е. изучить python, применительно к Blender, в достаточной мере чтобы по желанию брики заменять скриптами.
Август
Сообщения: 104

Сообщение #1330 jstas » 01.06.2017, 18:31

Август писал(а):В принципе, если в этом файле тор заменить пустышкой, то мог бы получится эффект добавления куба в место нахождения курсора (на самом деле пустышки).
Август, там к тору как раз и привязана пустышка, и если щелкнуть левой кнопкой, то добавляется куб в место курсора. Тор просто для наглядности.

вот файл без тора, просто пустышка в виде куба:
Вложения
untitled1.zip
(76.54 КБ) Скачиваний: 15
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1331 Август » 02.06.2017, 08:28

jstas писал(а):вот файл без тора, просто пустышка в виде куба
Вот такое у меня внимание было на тот момент. Ведь искал родительскую связь. Все объекты просмотрел в том числе и тор, а вот то, что он родитель пустышки прозевал в окне Структуры проекта.
Изображение
jstas, к предыдущим вопросам хочу предложить ещё один: на скрине видно образование в разных местах кубов, но, как видно ошибка, которую я показал во вчерашнем скрине даёт последствия, и кубы добавляются с разными значениями по оси Z.
А, это изменённый файл: http://my-files.ru/5tzye4 - почти готов, но, к сожалению, с непонятной мне ошибкой.
jstas, что-то пояснить по заданным мною вопросам кнопки и бриксов можете?
Кстати, взываю о помощи не только к jstas. Всех, кто может что-то прояснить, прошу не отказывать в помощи.
Надеюсь и жду.

Добавлено спустя 4 часа 30 минут:
dron писал(а):в примерах есть пост:
/viewtopic.php?f=30&t=391&start=40#p36853
этого разве не достаточно? А раз вы не спешите то значит и разобрать его сможете.
dron, оказывается, что дело не в моей спешке или её отсутствии. Есть интересный для меня момент в примере на который вы дали ссылку, но о нём позже.
В скрипте примера есть строки:
if own['move'] == True:
# получаем подключенные к контроллеру актуаторы
motion = cont.actuators['Motion']
rotation = cont.actuators['Rotation']
Поскольку Blender не выдаёт ошибку, то значит что действительно есть актуаторы с именами "Motion" и "Rotation". В данном случае own это куб. Однако у куба я вижу только актуторы "Visibility" и "Visibility1".
Мало того, совершенно непонятно что включает скрипт "MoveTo.py". До сих пор я знал способ включения скрипта только через контроллер Python. Разве есть иные способы включения скрипта, и где спрятаны актуаторы "Motion" и "Rotation"?
Август
Сообщения: 104

Сообщение #1332 jstas » 02.06.2017, 16:54

Август писал(а):Поскольку Blender не выдаёт ошибку, то значит что действительно есть актуаторы с именами "Motion" и "Rotation". В данном случае own это куб. Однако у куба я вижу только актуторы "Visibility" и "Visibility1".
выбери куб нажми в актуатороре кнопку "Cube"
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1333 Август » 02.06.2017, 17:12

jstas писал(а):Август писал(а):
Поскольку Blender не выдаёт ошибку, то значит что действительно есть актуаторы с именами "Motion" и "Rotation". В данном случае own это куб. Однако у куба я вижу только актуторы "Visibility" и "Visibility1".
выбери куб нажми в актуатороре кнопку "Cube"
Я не понял, jstas, где и чего нажимать?
Изображение
Я вопрос Дрону задал по файлу moveTo.blend, ссылку на который он мне ранее давал.
Август
Сообщения: 104

Сообщение #1334 jstas » 02.06.2017, 17:19

на твоем скрине под словом "актюаторы" нажми "Cube".
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1335 Август » 02.06.2017, 18:07

jstas писал(а):на твоем скрине под словом "актюаторы" нажми "Cube".
jstas, сработало. Так что это за хрень такая, вы мне так и не ответили, как эти вещи получаются, как создаются? Коль сложно объяснить, то ссылкой может поделитесь.
Август
Сообщения: 104

Сообщение #1336 jstas » 02.06.2017, 19:05

Август писал(а):как эти вещи получаются, как создаются?
ты про какие вещи спрашиваешь?
Давай, ты список вопросов создашь и мы будем вместе с ними разбираться. Я же сам учусь вместе с тобой. Не знаю только, зачем мне это нужно :) Я раньше никогда BGE не занимался. Так что ты пожалуйста поточнее вопросы формулируй. :)
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


  • 1

Сообщение #1337 dron » 02.06.2017, 20:26

Август писал(а):Так что это за хрень такая, вы мне так и не ответили
Мы не умеем читать мысли и то, что для вас очевидно другим может быть открытием так что, просьба формулировать вопросы так, что бы было понятны причины его появления (и как говорится хорошо заданный вопрос половина ответа)).
А если вы про то, что брики соединенны между объектами то да так можно делать) Нужно выделить несколько объектов и в редакторе логики уже нафигачить как душе угодно) только через неделю это разобрать даже автор не сможет, а я да не усмотрел что в примере такая сложность есть и прошу за это прощения.

вам конкретно из этого примера в скрипте нужно была только строка 31 которую можно вывести через print и потом потыкать ко полю и посмотреть что выводится.

зы так как скрипт менее 100 строк (половина комментарии) и он один мне показалась что с ним то разобраться вы сможете
Данный контент распространяется под лицензией "Creative Commons BY-SA" если не указанно иного.
http://creativecommons.org/licenses/?lang=ru
dron M
Аватара
Сообщения: 109

Сообщение #1338 Август » 03.06.2017, 08:34

jstas писал(а):ты про какие вещи спрашиваешь?
Давай, ты список вопросов создашь и мы будем вместе с ними разбираться. Я же сам учусь вместе с тобой.
dron писал(а):Мы не умеем читать мысли и то, что для вас очевидно другим может быть открытием так что, просьба формулировать вопросы так, что бы было понятны причины его появления (и как говорится хорошо заданный вопрос половина ответа)).
Ну что же, давайте по второму кругу. Моё сообщение от 01.06.2017, 15:03.
Август писал(а):На этом скрине непонятно что это за кнопка и каким образом появились блоки контроллеров и актуаторов, что это вообще такое и для чего предназначено? Может поделитесь ссылкой по которой с этими вопросами можно ознакомиться. Мне до сих пор ничего подобного не попадалось.
То, что не знаете вы оба что за кнопка и в каких случаях она появляется я понял, а вот по поводу выделенной и подчёркнутой части вопроса я так же подумал что у вас ответа нет, и вдруг вчера jstas "рожает"
jstas писал(а):на твоем скрине под словом "актюаторы" нажми "Cube".
.
Нажал и действительно увидел актуаторы чему был здорово удивлён, поскольку уже нажимал на кнопку "halo" ниже в группе контроллеров и такую же в группе актуаторов. Результатом было скрытие бриков, или показ бриков "halo" (уж не знаю) контроллеров и актуаторов. Так же я вчера удивился, что jstas показал мне где находятся искомые мною актуаторы - значит он знает что это за кнопки, потому уже вторично и задал свой вопрос. Ну, то дело каждого делиться знаниями или не делиться, и обижаться или раздражаться здесь нечем. Разъясните - хорошо, уйдёте от ответа - буду ждать другого случая, другого участника который сможет, и главное, захочет объяснить.
dron писал(а):А если вы про то, что брики соединенны между объектами то да так можно делать)
dron, это вы про блоки отмеченные стрелками?
Изображение
Если про них, то в чём их смысл и как они создаются.
dron писал(а):вам конкретно из этого примера в скрипте нужно была только строка 31 которую можно вывести через print и потом потыкать ко полю и посмотреть что выводится.
Я использую этот метод, но в рассматривании предложенного вами примера до этого просто пока дело не дошло - непонятки с этими, стрелками отмеченными блоками, застопорили.
Август писал(а):Непонятно назначение сенсора Мышь с событием Наведения курсора и контроллером "И" принадлежащие объекту Plane. Это нереализованная заготовка или она как-то используется? Я что-то с таким явлением пока не встречался. Контроллер здесь для чего, для того чтобы можно было как-то через него использовать сенсор мыши?
Я спрашиваю вот по этому фрагменту:
Изображение
jstas писал(а):Давай, ты список вопросов создашь и мы будем вместе с ними разбираться.
Вот я и составил, но это вопросы по примеру предложенному dron'ом.
По моему файлу, по ошибке в изменённом файле: http://my-files.ru/5tzye4 соображения какие-нибудь есть?
Август
Сообщения: 104

Сообщение #1339 jstas » 03.06.2017, 08:59

Август писал(а):То, что не знаете вы оба что за кнопка и в каких случаях она появляется я понял
далась тебе эта кнопка, она к твоему коду не имеет никакого значения, можешь не обращать на нее внимание.
http://blender3d.org.ua/forum/python/230.html?pn=9001

Добавлено спустя 13 минут 9 секунд:
Август писал(а):каким образом появились блоки контроллеров и актуаторов, что это вообще такое и для чего предназначено?
Ну ты же в своем файле их как то создал. Не пойму, в чем у тебя трудность.
И перестань уже обижаться на каждое слово, тебе пытаются помогать, а ты нервничаешь. Мы же по разную сторону экрана, бывают недопонимания, это нормально. Поэтому и задаем наводящие вопросы. Какие то вопросы теряются, так что ничего страшного если ты их повторишь :)

Добавлено спустя 3 минуты 30 секунд:
Август писал(а):По моему файлу, по ошибке в изменённом файле: http://my-files.ru/5tzye4 соображения какие-нибудь есть?
Не знаю, у меня нормально добавляются. Может ты кнопку мыши долго держишь?
А чтобы не было ошибки убери у плоскости контроллер.

И можешь пояснить, для чего нужен этот код?

Спойлер
Код: Выделить всё
if getCube == 0:                        # если свойство пустышки getCube имеет значение 0 - этап готовности к добавлению куба
    act = cont.actuators["Edit Object"] # получить актуатор Edit Object объекта Empty
    cont.activate(act)                  # активировать актуатор Edit Object, который добавляет объект куб   
    getCube = 1
    objEmpt["CubeIs"] = getCube         # передать в значение свойства CubeIs этап 1 - добавление объекта куб
elif getCube == 1:                      # если активирован актуатор Edit Object и куб добавлен в сцену
    cube = objList1["Cube"]             # получить объект Cube
    xcube = cube.position[0]         # получить X позицию cube
    ycube = cube.position[1]         # получить Y позицию cube
    getCube = 2
    objEmpt["CubeIs"] = getCube         # передать в значение свойства CubeIs 2 этап создания объекта куб
elif getCube == 2:
    getCube = 0
    objEmpt["CubeIs"] = getCube         # передать в значение свойства CubeIs этап окончания добавления объекта куб и готовность к созданию нового

Добавлено спустя 9 минут 45 секунд:
Август писал(а):Мало того, совершенно непонятно что включает скрипт "MoveTo.py". До сих пор я знал способ включения скрипта только через контроллер Python.
Именно через контроллер он и включается.
Эх, как бы мне это бы тоже, по обмену премудростями?
jstas M
Аватара
Сообщения: 475


Сообщение #1340 Август » 03.06.2017, 10:17

jstas писал(а):Август писал(а):
То, что не знаете вы оба что за кнопка и в каких случаях она появляется я понял
далась тебе эта кнопка, она к твоему коду не имеет никакого значения, можешь не обращать на нее внимание.
http://blender3d.org.ua/forum/python/230.html?pn=9001
Видите jstas, не один я такой - нелюбящий непонятного. В принципе подсказка у кнопки требует нажатия. Нажал. Изменений никаких не обнаружил, но уж коли так Blender хочет - пусть будет по его.
Добавлено спустя 13 минут 9 секунд:
Август писал(а):
каким образом появились блоки контроллеров и актуаторов, что это вообще такое и для чего предназначено?
Ну ты же в своем файле их как то создал. Не пойму, в чем у тебя трудность.
Нет, в моём файле таких чудес нет. Я спрашиваю о блоках в моём последнем скрине, в сегодняшнем, помеченных стрелками. Как создаются, в чём их смысл?

Добавлено спустя 3 минуты 30 секунд:
Август писал(а):
По моему файлу, по ошибке в изменённом файле: http://my-files.ru/5tzye4 соображения какие-нибудь есть?
Не знаю, у меня нормально добавляются. Может ты кнопку мыши долго держишь?
Да в этом причина. Поставил пропуск 50 и действительно эффект пропал.
Однако в нём есть ещё одна несуразица. Пустышка и куб имеют нулевое значение по оси Z, а Ploskost имеет значение -4 по этой оси. Кубы же появляются в половину своего размера по оси Z, а вторя половина ниже плоскости, т.е. опорная точка куба имеет значение -4. С чего бы это? Пустышка по оси Z в какой момент съезжает на значение -4?

Добавлено спустя 2 минуты 31 секунду:
jstas писал(а):Именно через контроллер он и включается.
Вы же показали где его можно увидать... Теперь и я его вижу.

Добавлено спустя 58 минут 24 секунды:
Вижу не только его, но и массу вопросов.
Изображение
Как в этом "огороде" разобраться надо думать, но слёту появляется вопрос где прячутся модули "MoveTo.move" и "MoveTo.clickPosition"? Что такое модули в Python мне где-то попадались статьи - поищу, но где они могут находиться в Blender, точно не видел информацию.
Допустим что два объекта сразу в Редакторе логики необходимо для наглядности.
В контроллерах есть два брикса "Видимо-Исходно" - точно описание таких "зверей не видел" - что это за блоки, в чём их смысл и их возможности?
Чтобы не забирать ваше время, если проще дать ссылку чем объяснять, то это меня вполне устроит.
Август
Сообщения: 104

Пред.След.

Вернуться в Игровой движок Blender

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость