Leadwerks Engine 2.3 Урок первый Итак, создаем папку для своего первого проекта. И туда кидаем вот эти файлы из папки с SDK: - Папку "Scripts"
- engine.dll
- engine.debug.dll
- newton.dll
- JointLibrary.dll
- SciLexer.dll
- shaders.pak
- engine.exe
Отлично, теперь закачаем готовую сценку: КЛАЦ Создадим папку "media" в нашем проекте, и скинем туда разархивированную папку "scene". Итак, приступаем к скрипту! Создаем в нашей папке файл *.lua и открываем его программой "ScriptEditor.exe". Заходим в "Tools" -> "Options" и установите путь к файлу "Engine.exe" из вашей папки, и к двум остальным из папки с SDK. Теперь нам нужно чтобы скрипт определил корневую директорию проекта. Для этого мы назначаем абстрактный путь: Code RegisterAbstractPath("") Это означает что корневой папкой будет выбрана папка в которой находится исполняемый файл. Поскольку мы будем использовать клавиатуру в данном уроке, нам нужно добавить её скрипт: Code require("Scripts/constants/engine_const") Далее мы задаем разрешение окна: И создаем "World", это сам игровой мир, "framework"(Если что, профи, подправьте): Теперь нам нужно создать камеру, чтобы мы видели что происходит в этом "Мире": Code camera = CreateCamera() Тоесть мы создаем имя "camera", и как бы на этом слоте создается сама камера... И тут же нам нужно задать позицию для этой камеры. Таким же образом создаются позиции и для других объектов, а тоесть по такой контрукции: Code camera:SetPosition(Vec3(0,2,-10)) Тоесть пишится название объекта, двоеточие, SetPosotion(Vec3(x,y,z)) Если кому не понятно - то Vec3 это координаты, а тоесть три числа. Далее создадим свет, а то темно будет, ага ага: Code light1 = CreateDirectionalLight() light1:SetRotation(Vec3(45,45,0)) Заметьте, тут мы не определяли позицию, а выбрали вращение, которое тоже настраивается с помощью Vec3. А теперь загрузим скачанную сцену. Code scene = LoadMesh("abstract::scene.gmf") Тут мы видим как обычно задается имя, и на него ставиться Меш. И наверно мы захотим знать загрузилась ли эта сцена или нет! Вот что нужно сделать: Code if scene == nil then Notify("Fail!!!") else Notify("Done!!!") end Далее нам нужно создать цикл, который будет рендерить сцену все время. Мы используем цикл "While": Code while KeyDown(KEY_ESCAPE)==0 do
fw:Update() fw:Render()
Flip(0)
end Это проще будет понять в виде псевдо-кода: Code пока КлавишаЗажата(ESCAPE)равно 0, делать следующее
НашМир:Обновление() НашМир:Рендеринг()
Щелканье (0)
конец Итак, компилируем! Что мы видим? Эта небольшая сценка, где только что работали гастбайтеры |