BGE, Python , опыты дилетанта.

Board index Геймдев в Blender Игровой движок Blender

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

Post #561by MechanizM » 06.03.2020, 23:56

Mihanik,
Здравствуйте, я в качестве хобби строю игру на BGE, и наткнулся на Стимпашки. Для меня это отличный пример скриптинга на движке, но в силу моего малого знания языка, многие решения не понимаю. В частности интересует скрипт Character.py. Я не прошу научить языку, а только объяснить некоторые моменты кода, если можете напишите пожалуйста, буду рад и заранее спасибо.
MechanizM
Posts: 6

Post #562by Mihanik » 07.03.2020, 12:11

MechanizM, переадресовываю вопрос Bibo. Надеюсь он ответит. Весь скриптинг Стимпашек исключительно его заслуга. Моя лишь визуальная часть. Я просил чтоб он пояснения писал, чтоб на досуге самому поучиться но так и не преуспел в этом.
Mihanik M
Avatar
Posts: 1571

Post #563by Bibo » 07.03.2020, 13:03

Йоу, почти пять лет прошло.
Mihanik wrote:Я просил чтоб он пояснения писал, чтоб на досуге самому поучиться но так и не преуспел в этом.
Я бы и сам сейчас многое переписал. Хотя не факт, что получилось бы лучше.
Bibo
Avatar
Posts: 612

Post #564by MechanizM » 07.03.2020, 19:50

Mihanik, задокументировано оно хорошо, код легко адаптируется, просто не понимаю некоторые моменты.
Bibo, да понимаю), за это время даже в своём коде можно не разобраться. Если сможете помочь, про метод movement в классе Character, я не совсем понимаю как он передвигает персонажа. В методе есть worldPosition и есть setLinearVelocity и что за что отвечает, в контексте кода, мне пока не понятно. И еще, у Вас управляемый объект не вращается при повороте камеры, только камера через объект пустышку, у меня же, моим скриптом, вращается управляемый объект, в этом есть критичная разница, или просто кому как удобней?
MechanizM
Posts: 6

Post #565by Bibo » 07.03.2020, 21:41

MechanizM wrote:В методе есть worldPosition и есть setLinearVelocity и что за что отвечает, в контексте кода, мне пока не понятно.
Судя по коду, берутся глобальные координаты объекта (worldPosition), посылается луч в направлении движения для проверки столкновения со стеной перед перемещением. Потом что-то подобное делается с полом. Если мне не изменяет память, я пытался рассчитать перемещение объекта проверкой столкновений со стенами и плоскостью пола под ногами вручную. Какой-то костыль, который давал бы мне дополнительную ифнормацию о столкновениях, которую не давал движок базовым функционалом. Но в итоге ничего адекватного не получилось, я выбросил лишнее и оставил невразумительный огрызок который хоть как-то работает. Я бы не рекомендовал углубляться в этот кусок кода.

К слову, нужно посмотреть на тип физики объекта "PHYCharacter_body". Тип физики Character в той версии BGE работал несколько отлично от Dynamic Body и Rigid Body, в том числе иначе ведет себя придание этому объекту скорости через setLinearVelocity. Вероятно, получившаяся каша в методе movement, в том числе заслуга неадекватного поведения типа физика Character.

MechanizM wrote:у Вас управляемый объект не вращается при повороте камеры, только камера через объект пустышку, у меня же, моим скриптом, вращается управляемый объект, в этом есть критичная разница, или просто кому как удобней?
Я вроде хотел минимизировать физическое воздействие на объект, чтобы как можно сильнее упростить задачу. Вращая пустышку, я не вращаю объект, а значит не придется думать об угловых скоростях и их возможном влиянии на движение. Не критично, но чем проще конструкция, тем проще работа.
Bibo
Avatar
Posts: 612

Post #566by MechanizM » 07.03.2020, 22:49

Bibo, в общем это многое объясняет для меня. С полом у меня решение простое, свойство floor, за решение физических огрехов я ещё не брался, хотя именно пол, в доводит меня физикой :suicid: .В код я углубляюсь т.к. я_пишу-я_учу, сегодня читая код понял ещё некоторые моменты, а Ваше сообщение, так скажем открыло глаза на некоторые другие. В итоге если я правильно понял worldPosition нужен для проверки состояний, в основном физических, а setLinearVelocity уже для перемещения объекта? Дело вопроса не в кривости движка, хоть он и действительно кривой, точнее не доработанный и многие элементы в нём отсутствуют, дело в том, что я новичок в языке, а им можно дописать эти пробелы, но не с моими знаниями).

Added after 33 minutes 21 second:
В общем скидываю свой скрипт. Для ознакомления и даже может быть для использования. Это то что есть, и то что надо переделать в ООП
MechanizM
Posts: 6

Post #567by Bibo » 08.03.2020, 10:22

Лучше сазу на UPBGE перейти, там функционал дополнен.

Added after 14 minutes 52 seconds:
К месту сказать будет, когда все это дело писалось, я еще не сел учить английский. Львиная доля документации, а так же примеров и ответов с blenderartist, мне оставались сильно неясны. Многое приходилось осваивать методом проб, ошибок и научного тыка. Поэтому качество результата оставляет желать лучшего.
Bibo
Avatar
Posts: 612

Post #568by MechanizM » 08.03.2020, 14:07

В общем скидываю свой скрипт. Для ознакомления и даже может быть для использования. Это то что есть, и то что надо переделать в ООП
что-то файлик не скинулся :suicid: , вторая попытка

Added after 5 hours 6 minutes:
Bibo, UPBGE я вроде бы пробовал и чем-то он мне не понравился, а так в принципе хотя бы рабочую демку запилить на BGE, тогда уже и выбирать можно будет движок.
Attachments
zt_move.zip
(1.7 KiB) Downloaded 43 times
MechanizM
Posts: 6

  • 1

Post #569by Bibo » 15.03.2020, 17:42

К стати, Mihanik, появился билд UPBGE под EEVEE, может заинтересует. Экспериментальный, правда.
Bibo
Avatar
Posts: 612

Post #570by Mihanik » 16.03.2020, 14:46

Bibo wrote:появился билд UPBGE под EEVEE, может заинтересует. Экспериментальный, правда.
Интересует, но некогда пока ковырять, EEVEE с BGEшной логикой, для меня идеальный игровой движок)
Mihanik M
Avatar
Posts: 1571

Post #571by Bibo » 16.03.2020, 22:04

Тогда вот, на всякий. Ото там на буржуйском, вдруг запутаешься.
Bibo
Avatar
Posts: 612

Previous

Return to Игровой движок Blender

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest