Пока занимаюсь изучением данного движка, решил написать пару уроков, чтобы самому все усвоить. Итак - приступим! 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)
конец Итак, компилируем! Что мы видим? Эта небольшая сценка, где только что работали гастбайтеры Leadwerks Engine 2.3 Урок второй Итак, мы хотим полетать и рассмотреть нашу сцену. Нам нужно спрятать мышку, чтобы было как в шутерах(это добавляем после загрузки сцены): Думаю тут пояснений не надо. Далее мы создадим переменную для обзора мышкой чтобы она хранила три координаты: Code camrotation = Vec3(0) Ноль означает что значения пока нет. Теперь перейдем к самому главному, но и сложному. (Это нужно писать внутри цикла)Зададим две переменные для мышки и камеры: Code gx=Curve(MouseX() - GraphicsWidth() /2, gx, 10) gy=Curve(MouseY() - GraphicsHeight() /2, gy, 10) Это трудно понять, но если немного подумать... Теперь зададим координаты той самой переменной, которую мы создали(Это, и все остальное мы будем писать внутри цикла): Code camrotation.x = camrotation.x + gy / 10 camrotation.y = camrotation.y - gx / 10 Тут уже все понятно. На самом деле можно сделать управление камерой с меньшим количеством кода, но тогда камера будет вертеться очень плохо. Теперь делаем так чтобы камера смотрела туда, где мышка: Code camera:SetRotation(camrotation,1) Управление камерой мышкой почти готово, осталось только сделать так, чтобы мышка была всегда в центре экрана: Code MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2) И делаем движение: Code move = KeyDown(KEY_D) - KeyDown(KEY_A), move, 10 strafe = KeyDown(KEY_W) - KeyDown(KEY_S), strafe, 10 camera:Move(Vec3(move/10, 0, strafe/10)) Тут тоже, кто хоть чуть чуть знает любой ЯП, поймет этот код. Теперь компилируем и радуемся. Кто скажет что камера не совсем хороша -> в английском видео туториале на офф. сайте, камера была просто бешеная! Добавлено (30.12.2010, 13:24) --------------------------------------------- Чтоже комментов нет?
Сообщение отредактировал Бомбер - Четверг, 30.12.2010, 13:19 |