В Роблокс Студио при создании игр часто возникает задача определить, в каком направлении смотрит объект, находится ли игрок перед NPC или попадает ли объект в поле зрения.
Для этого используется метод Dot — один из самых важных инструментов в работе с векторами.
Что такое Dot в Роблокс Студио
Dot — это метод векторной математики:
Vector3:Dot(otherVector)Он возвращает число, которое показывает, насколько два вектора направлены в одну сторону.
Проще говоря, Dot отвечает на вопрос:
Смотрят ли два направления в одну сторону и насколько сильно?
Почему Dot так важен в играх
Dot используется в играх для:
- логики зрения NPC;
- определения угла между объектами;
- проверки, находится ли игрок перед персонажем;
- ИИ противников и охранников;
- камер, прицеливания и взаимодействий.
Без Dot невозможно корректно реализовать механику «NPC видит игрока».
Как работает Dot простыми словами
Представь два вектора как стрелки:
- если стрелки направлены в одну сторону → результат положительный;
- если они перпендикулярны → результат 0;
- если направлены в противоположные стороны → результат отрицательный.
Значения Dot и их смысл
⚠️ Эти значения актуальны, если векторы нормализованы с помощью .Unit.
Почему важно использовать .Unit
Одна из самых частых ошибок — забыть .Unit.
❌ Неправильно:
local dot = vectorA:Dot(vectorB)✅ Правильно:
local dot = vectorA.Unit:Dot(vectorB.Unit).Unit делает вектор длиной 1, и Dot начинает показывать только направление, а не расстояние.
Простой пример с векторами
local a = Vector3.new(1, 0, 0).Unit
local b = Vector3.new(1, 0, 0).Unit
print(a:Dot(b)) -- 1Оба вектора смотрят вправо — направления совпадают.
Как определить, находится ли объект перед другим
Это самый популярный сценарий использования Dot.
local npcRoot = npc.HumanoidRootPart
local npcLook = npcRoot.CFrame.LookVector
local toPlayer = (playerRoot.Position - npcRoot.Position).Unit
local dot = npcLook:Dot(toPlayer)
if dot > 0.7 then
print("Игрок перед NPC")
endЧто здесь происходит:
- LookVector — направление взгляда NPC;
- toPlayer — направление от NPC к игроку;
- Dot сравнивает эти направления.
Если значение больше 0.7, игрок находится в зоне видимости.
Связь Dot и угла
Хотя Dot возвращает число, его можно воспринимать как приблизительный угол:
- Dot ≈ 1 — объект прямо перед нами;
- Dot ≈ 0 — объект сбоку;
- Dot < 0 — объект за спиной.
Это намного удобнее, чем вычислять угол через тригонометрию.
🚀 Хочешь научиться писать свои скрипты с нуля?
Запишись на обучение по Роблокс Студио на сайте roblo.ru
Ты узнаешь, как создавать игры, интерфейсы и программировать события — шаг за шагом!
