Пока занимаюсь изучением данного движка, решил написать пару уроков, чтобы самому все усвоить. Итак - приступим!
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)
---------------------------------------------
Чтоже комментов нет?