Ответ в теме: Курс по BGE от drdotmom

Главная Форумы Blender Game Engine (BGE) Курс по BGE от drdotmom Ответ в теме: Курс по BGE от drdotmom

#13099
DisasterDisaster
Участник

Глава 2. Логика.

Очень много букв!

Код – это сценарий, читая который программа получает необходимые инструкции.
Хотя если точнее – это чистая логика, описанная понятным языком для компьютера. Игровой движок это некоторе объединение звукового, физического и графического движков. Смысл в том, что игровой движок не только объединят все эти движки предоставляя к ним удобный доступ на одном языке, но и ускоряет процесс написания игрушки за счёт объединения нескольких часто используемых функций в одну.

Как обьяснить компьютеру, чего ты от него хочешь или “вход, обработка, выход”.

Плиточки Blender Game Engine (они же ноды).
По-умалчанию блендер делит эти ноды на сенсоры, контроллеры и актуаторы.

Сенсоры это входящяя информация. Она может быть любой – запуск игры, переменная, клавиша клавиатуры.

Контроллеры – определяют, как читать эти сенсоры для взаимодействия с актуаторами. Так, например, имея переменную равную 100 мы можем запустить актуатор тогда, когда переменная станет меньше или больше 100.

Актуаторы – определяют действие, которое случится после того, как контроллер обработает сенсор и даст “добро” на выполнение при соблюдении условий.

Эти базовые ячейки заменяют стандартную конструкцию проверки:
“Если условие выполнено, то происходит действие”

Их минусом явлеятся узкий функционал как в количестве актуаторов, так и в их качестве.
Так, например, имея актуатор “Sound” – мы можем настроить для звука параметр “pitch” и “volume” перед запуском игры. Но как быть, если эти параметры нам нужно будет менять в процессе игры для, например, звука двигателя?
Тут уже необходимо использовать скрипт на bge phyton или, по-разговорному – код.

Весь код упирается в написание инструкции из предоставленных движком функций.

Игровой движок – как конструктор. Он содержит необходимые блоки, которых, скорее всего, будет достаточно для ваших целей.
Из этих блоков вы и конструируете игру вместо того, что бы забивать информацию о том, на какую ногу процессора подть ток, а с какого убрать и когда.

Первая мысль, которая проскакивает в голове человека, решившего написать свой первый код – “как мне написать то, что мне нужно на выбранном мной языке?”

Синтаксис.
Что такое синтаксис?
Синтаксис – это правила, которые регулируют написание кода. Как мы руководствуемся правилами при написании писем в реальном мире – так и в компьютерном должны следовать правилам. Причём если человек поймёт “превед медвед” – компьютер решит, что вы больны.

Операции.
Операции это действия, которые мы можем выполнить над функциями и переменными.
Так, например, складывая скорость с положением в пространстве – мы получим в лобешник за эту дичь воспользуемся арифметическим оператором “+”

Арифметические операторы:
1. “+” – сложение
2. “-” – вычитание
3. “*” – умножение
4. “/” – деление
5. “%” – возвращает только остаток от деления (например при делении 11 на 4 – вернёт остаток – 3)
6. “//” – цельночисленное деление(например при делении 11 на 4 – вернёт 2)
7. “**” – возведение в степень.

Операторы сравнения:
1. “==” – сравнение. Выражение 5==5 вернёт “true”.
2. “!=” – не равно. Выражение 5!=5 вернёт “false”.
3. “<” и “>” – меньше или равно \ больше или равно.
4. “<=” и “>=” – меньше или равно \ больше или равно.
Операторы присваивания:
1. “=” – присваивает значение правого операнда левому. (например x=5)
2. “+=” / “-=” / “*=” и т.д. – присваивание с арифметической операцией. Так, например, выражение x+=y вернёт резултат сложения и присвоит его переменной “x”

Логические операторы:
1. “if” – “если”. (если x=y – выполняется действие)
2. “else” / “or” – “Иначе” / “или” (Если x = y – выполняется действие 1, иначе – действие 2)

Разберём небольшой кусочек кода bge:

import bge
player = bge.logic.getCurrentController()
step = player.sensors ["KeyboardW"]
sound = player.actuators ["Step_Sound"]

if step.positive:
    player.activate(sound)
else:
    player.deactivate(sound)

Указываем player как локальное имя(т.е. только для этого скрипта)для текущего контроллера (объекта, на котором запускается скрипт)
Указываем step как локальное имя для сенсора с именем “KeyboardW”
Указываем sound как локальное имя актуатора “Step_Sound”
Если сенсор был активирован:
то запускается актуатор “Step_Sound”
Иначе:
отключается актуатор “Step_Sound”

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

Что касается логического оператора.
Если вы задаёте вопрос – должен быть ответ. Ответов может быть несколько и все они должны содержаться строчкой ниже и с отступом в одну табуляцию относитьно логического оператора.
#

if x=y:
	функция;
if t!=s:
	функция;
	функция;
	функция;

#

if g<=4:
	высунуть язык;
	if g<0:
		присесть;
		моргнуть;
	else:
		съесть бревно;
else:
	пролить чай;
#

Если g меньше 4х, то персонаж высовывает язык. Если при этом g<0 – то персонаж высунув язык приседает и моргает. Если g меньше 4, но больше 0 – персоаж высунув язык съедает бревно. Если g больше 4х – персонаж проливает чай.

Теперь о самом важном – о применении.

import bge // Открывает библиотеку функций игрового движка
cont = bge.logic.getCurrentController //текущий контроллер
own = cont.owner //переменные текущего контроллера

sound = cont.actuators ["Sound_onlow"] //актуатор текущего контроллера с именем "Sound_onlow"
gear = own['gear'] //переменная текущего контроллера с именем "gear"

sound.pitch = (own["rpm"]*0.01)+ (gear / 50) // для актуатора "Sound_onlow" параметр pitch будет равен переменной "rpm" умноженной на 0.01  плюс результат деления переменной gear на 50.
cont.activate(sound) // для текущего контроллера выполняется актуатор  ["Sound_onlow"] cо значением pitch, зависящим от оборотов и передачи.

Переменная оборотов и переменная текущей передачи регулирует уровень pitch для звука двигателя по формуле (rpm*0.01)+(gear/50). Формула для правильного звучания двигателя определялась опытным путём.

При присвоении вы можете использовать любые имена для читабельности кода. Так, например, вы можете bge.logic.getExitKey()(узнать клавишу выхода) присвоить переменной с именем edgjluvbhe, но зачем?

Ссылка на Blender Phyton References, в котором вы найдёте все функции bge phyton с описанием, дополнительной информацией и примерами.

В целом синтаксис приходит с опытом и потому нужно активнее читать скрипты на bge phyton и других яп. Искать общую логику, характерные особенности. То, что я вам сейчас описал – не позволит вам прямо сейчас начать писать GTA6, но поможет изучить bge phyton или, как минимум – начать его читать.

Надеюсь, был полезен.
В следующей главе планирую разобрать физику машинки из Rally Cross по строчкам.


О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели, материалы и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.