CS2 Lua API

vector2

Двумерный вектор: координаты и размеры на экране. Поля x, y.

vector2(x?: number, y?: number)#

Создаёт вектор. Незаданные компоненты равны 0. vector2(v) — копия.

Параметр Тип Описание
x, y number компоненты, по умолчанию 0

Возвращает: vector2.

local pos  = vector2(100, 50)
local size = vector2(120, 30)
local center = pos + size / 2
print(center)   -- (160, 65)

Операторы#

+, -, *, / (с числом или покомпонентно), унарный -, # (длина) и == — как у vector.

local p = vector2(100, 50) + vector2(10, 10) * 2
print(p)   -- (120, 70)

v:unpack()#

Возвращает: number, number — x, y.

local w, h = render.screen_size():unpack()
print(w, "x", h)

v:init(...), src:copy(dst: vector2)#

init переинициализирует вектор на месте. copy копирует src в dst.

Параметр Тип Описание
dst vector2 куда копировать

Возвращает: ничего.

local p = vector2()
p:init(5, 5)

v:length(), v:lengthsqr()#

Длина и её квадрат.

Возвращает: number.

print(vector2(3, 4):length())   --> 5

a:dist(b: vector2), a:distsqr(b: vector2)#

Расстояние между точками и его квадрат.

Параметр Тип Описание
b vector2 вторая точка

Возвращает: number.

-- Враг, ближайший к центру экрана
events.render:set(function()
    local center = render.screen_size() / 2
    local best, best_d = nil, math.huge
    for _, pawn in ipairs(entity.pawns(true)) do
        local p = render.world_to_screen(pawn:eye_position())
        if p and p:dist(center) < best_d then best, best_d = p, p:dist(center) end
    end
    if best then render.line(center, best, color(255, 255, 0, 255)) end
end)

a:dot(b: vector2)#

Скалярное произведение.

Параметр Тип Описание
b vector2 второй вектор

Возвращает: number.

print(vector2(1, 0):dot(vector2(0, 1)))   --> 0

a:cross(b: vector2)#

Псевдоскалярное произведение a.x * b.y - a.y * b.x.

Параметр Тип Описание
b vector2 второй вектор

Возвращает: number.

print(vector2(1, 0):cross(vector2(0, 1)))   --> 1

a:lerp(b: vector2, t: number)#

Линейная интерполяция.

Параметр Тип Описание
b vector2 вторая точка
t number доля, 0–1

Возвращает: vector2.

-- Плавное движение плашки к цели
local pos = vector2(0, 0)

events.render:set(function()
    pos = pos:lerp(render.screen_size() / 2, 0.1)
    render.rect(pos, vector2(10, 10), color(255, 255, 255, 255))
end)

v:normalize(), v:normalized()#

normalize делает вектор единичным на месте и возвращает прежнюю длину; normalized возвращает единичную копию.

Возвращает: normalize — number; normalized — vector2.

print(vector2(10, 0):normalized())   -- (1, 0)

v:scale(s: number), v:scaled(s: number)#

Масштаб на месте и масштабированная копия.

Параметр Тип Описание
s number множитель

Возвращает: scale — ничего; scaled — vector2.

print(vector2(2, 3):scaled(10))   -- (20, 30)

v:as_vector(z?: number)#

Переводит в трёхмерный вектор.

Параметр Тип Описание
z number третья компонента, по умолчанию 0

Возвращает: vector.

print(vector2(120, 70):as_vector(5))   -- (120, 70, 5)