Page 29 of 29

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

Post #562Posted: 07.03.2020, 12:11
by Mihanik
MechanizM, переадресовываю вопрос Bibo. Надеюсь он ответит. Весь скриптинг Стимпашек исключительно его заслуга. Моя лишь визуальная часть. Я просил чтоб он пояснения писал, чтоб на досуге самому поучиться но так и не преуспел в этом.

Post #563Posted: 07.03.2020, 13:03
by Bibo
Йоу, почти пять лет прошло.
Mihanik wrote:Я просил чтоб он пояснения писал, чтоб на досуге самому поучиться но так и не преуспел в этом.
Я бы и сам сейчас многое переписал. Хотя не факт, что получилось бы лучше.

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

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

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

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

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

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

Post #567Posted: 08.03.2020, 10:22
by Bibo
Лучше сазу на UPBGE перейти, там функционал дополнен.

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

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

Added after 5 hours 6 minutes:
Bibo, UPBGE я вроде бы пробовал и чем-то он мне не понравился, а так в принципе хотя бы рабочую демку запилить на BGE, тогда уже и выбирать можно будет движок.

Post #569Posted: 15.03.2020, 17:42
by Bibo
К стати, Mihanik, появился билд UPBGE под EEVEE, может заинтересует. Экспериментальный, правда.

Post #570Posted: 16.03.2020, 14:46
by Mihanik
Bibo wrote:появился билд UPBGE под EEVEE, может заинтересует. Экспериментальный, правда.
Интересует, но некогда пока ковырять, EEVEE с BGEшной логикой, для меня идеальный игровой движок)

Post #571Posted: 16.03.2020, 22:04
by Bibo
Тогда вот, на всякий. Ото там на буржуйском, вдруг запутаешься.