[b][align=centerToribash Lua Tutorial 4 – Рисование[/align][/b]
В этом туториале я расскажу вам как рисовать в 2D и 3D
В конце этого туториала ты сможеш :
1.Рисовать текст я динамическим размером и задним фоном
2.Рисовать шарики.
Рисование в 2D
Все рисование в lua происходит благодоря хукам.Чтобы рисовать в 2d тебе нужно использовать draw2d хук и для рисования в 3d тебе нужно использовать хук draw3d .Так давайте рассматривать рисование в двух измерениях.
add_hook("draw2d","draw", draw2dfunc)
Это draw2d хук , давайте рассмотрим основные функции.
Для рисования чего либо ты долженг выбрать цвет r=красный g=зеленый b=синий и a=альфа(прозраный).Номера должны находиться в диапазоне от 0-1. (0,0,0,1) для черного и (1,1,1,0.5) для белого цвета.
draw_quad(x,y,w,h,texture)
Теперь попробуем нарисовать прямоугольник в Lua. х = х координат, у = у-координата, W = ширина, Н = высота и опция текстуры, которую я возможно рассмотрю позже.
draw_disk(x, y, inner, outer, slices, loops, start, sweep, blend)
Это код многоугольника x-x кооддината, inner-расстояние с внутреннего радиуса, y-у координата,outer-расстояние с внешнего радиуса.slices-кол-во углов(3-треугольник 4-четырехугольник).
Это код рисования текста.text=текст который будет нарисован , x= координата x , y=y координата.Шрифт выбирается цифрой 0-5 пример шрифтов вы увидите ниже
[img]http://i300.photobucket.com/albums/nn24/blambear93/fontsizes.png[/img]
Важныя заметка:
Координаты (0,0) обозначают что текст находится в верхнем левом углу, тем выше значение "х", правее вы рисуете, тем больше "у" значение, тем более в нижней части экрана вы рисуете. Пример: 100, 300 будет 100px справа от верхнего левого угла и 300px вниз.
Так давайте начнем рисовать наш первый прямоугольник!
function draw2dfunc()
set_color(0,0,0,1)
draw_quad(10,300,100,200)
end
add_hook("draw2d","draw", draw2dfunc)
Этот скрипт рисует прямоугольник с (10,300) до (110,500).
Давайте нарисуем немного более продвинутей и попродуем добавить какой-либо текст и динамическую форму прямоугольника.
text = { } -- Blank table
text[1] = "This is some text"
text[2] = "This is more text"
text[3] = "MOOOOOOOOOO"
text[4] = "Just a basic test really"
text[5] = "weeeeeeeeeeeeeeeeeee"
text[6] = "1231923823982938"
text[7] = 123.23
text[8] = "Blam is the best "
placey = 200
function draw2dfunc()
ScreenWidth, ScreenHeight = get_window_size()
set_color(0,0,0,1)
draw_quad(10,placey,ScreenWidth-20,#text*17.5)
set_color(1,1,1,1)
for i = 1,#text do
draw_text(text[i],12,(i*17)-17+placey,1)
end
end
add_hook("draw2d","draw", draw2dfunc)
Так чтот я написал много вам непонятного так что давайте все рассмотрим.
text = { }
text[1] = "This is some text"
text[2] = "This is more text"
text[3] = "MOOOOOOOOOO"
text[4] = "Just a basic test really"
text[5] = "weeeeeeeeeeeeeeeeeee"
text[6] = "1231923823982938"
text[7] = 123.23
text[8] = "Blam is the best "
Это текст который мы выводим на дисплей.
Это определяет где текст будет отображаться по оси x, в данном случае 200px сверху вниз .
ScreenWidth, ScreenHeight = get_window_size()
ScreenWidth-ширина окна в котором будет отображаться текст ScreenHeight-высота окна в котором будет отображаться текст.
Размер шрифта (я предпочитаю именно этот размер потомучто это самый оптимальный вариант на мой взгляд)
Расположение по оси y.
Рисование в 3D
Как я уже говорил рисование в 3d нужнается в draw3d хуке
add_hook("draw3d","draw", draw3dfunc)
Для рисования сферы в 3D нужно использовать :
draw_sphere(x,y,z,radius)
Сейчас если мы хотим нарисовать сферу над головой у тори мы должны узнать позицию нашей головы , для этого мы можем использовать :
x, y, z = get_joint_pos(0, 0)
Здесь x,y, и z являються x,y, и z координатами джоинта шеи нашего тори также можно сделать так :
get_joint_pos(player, joint)
список джоинтов здесь
А теперь можно и нарисовать что-то
Я нарисовал вот так
function draw3dfunc()
x, y, z = get_joint_pos(0, 0)
set_color(0,0,0,1)
draw_sphere(x,y,z,0.4)
end
add_hook("draw3d","draw", draw3dfunc)
На этом туториал кончаеться.Спасибо за прочтение.Я расскажу вам более про 3D в следущих туториалах.