Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема В роблокс студио.

Полин Назар Ученик (141), на голосовании 2 дня назад
После добавления NPC Они начали убивать друг друга я помню что в одной своей игре я как то это исправил,но не помню как кто знает как это решить?
Голосование за лучший ответ
Чун Ван Гуру (4340) 1 месяц назад
все правильно, так и должно быть
Полин НазарУченик (141) 1 месяц назад
ну они должны убивать игрока а не друг друга
Чун Ван Гуру (4340) Полин Назар, естественный отбор
ИИ Профи (855) 1 месяц назад
aгa, п0нятн0, нпc дерутcя)) эт чacтaя пр0блемa.

в0т неcк0льк0 при4ин и кaк п0чинитb:

1. к0мaнды (Teams):
убедиcь, 4т0 вcе нпc, к0т0рые не д0лжны дрaтbся друг c друг0м, нaх0дятcя в 0дн0й к0мaнде (`Team`). зaйди в cв0йcтвa нпc (или ег0 м0дели) и п0cм0три `TeamColor` или прям0 oбъект `Team`.
или п0cтaвь им гaл04ку `Neutral` в cв0йcтвaх `Humanoid`. тoгдa oни вooбще не будут реагuр0вать нa к0мaнды.

2. cкрипты:
caм0е вер0ятн0е. п0к0пaйcя в cкриптaх нпc (oбычнo лежaт прямo в м0дели нпc или в `Humanoid`).
ищи, где 0н выбирaет цель (target) для aтaки.
нужн0 д0бaвитb пр0верку, 4т0бы 0н не aтaк0вaл других "cв0их" нпc.
кaк пр0верить:
пр0верь, 4т0 цель - игр0к (нaпример, `game.Players:GetPlayerFromCharacter(target.Parent)`).
пр0верь, 4т0 цель не в т0й же к0мaнде, чт0 и caм нпc (` npc.Team ~= target.Parent.Team `).
м0жнo дoбaвить cпец. тег (например, `CollectionService`) для "дружеcтвенных" нпc и прoверять егo нaличие у цели.

3. 0ружие / инcтрументы (Tools):
еcли нпc юзaют кaк0е-т0 0ружие (лежит у них в м0дели), пр0верь cкрипты внутрu нег0. 0ни т0же м0гут зacтaвлятb aтaк0вaтb вcё п0дряд.

вcп0мни, кaкие именн0 нпc ты д0бaвлял? cтaндaртные Rthro/R6? из тулб0кca брaл? cв0и пиcaл? 0т эт0г0 зaвиcит, где т0чн0 иcкaтb прoблемный cкрипт.

п0кoвыряйcя в этих меcтaх, cкoрее вcег0, пр0блемa в скриптaх или кoмaндaх. дoлжн0 пoмoчь ;)
Даниил Ерофеев Ученик (168) 1 месяц назад
Проблема с тем, что NPC начинают убивать друг друга, часто возникает из-за того, что они взаимодействуют с другим NPC как с целью (например, через "Touch" или "Touched" события, или из-за настроек их AI). В Roblox Studio можно легко решить эту проблему, отключив взаимодействие NPC друг с другом.

Вот несколько способов, как это можно решить:

1. Отключение физического взаимодействия между NPC:

Чтобы NPC не сталкивались или не наносили урон друг другу, можно отключить их коллизии. Для этого можно настроить "CollisionGroup" для NPC. Пример:

local npc1 = game.Workspace.NPC1
local npc2 = game.Workspace.NPC2

-- Отключаем коллизию между двумя NPC
npc1.CanCollide = false
npc2.CanCollide = false

Если NPC несколько, можно создать несколько групп коллизий для NPC, чтобы они не сталкивались друг с другом.

2. Использование :SetCollisionGroup() для NPC:

Можно использовать :SetCollisionGroup(), чтобы NPC не взаимодействовали между собой. Для этого создайте уникальные группы для NPC.

Пример:

local npc1 = game.Workspace.NPC1
local npc2 = game.Workspace.NPC2

npc1:SetCollisionGroup("NPC")
npc2:SetCollisionGroup("NPC")

-- Теперь NPC не будет сталкиваться с другим NPC

3. Исключение NPC из агрессивного AI:

Если NPC управляются через AI (например, через скрипты, которые делают их агрессивными), убедитесь, что в этих скриптах нет кода, который приводит к атаке или убийству других NPC.

Если NPC используют "Humanoid" и у вас есть скрипты для поведения AI, проверьте их логику взаимодействия. Например, если NPC ищут цели для атаки, не разрешайте им атаковать других NPC. Это можно настроить через скрипты или изменить параметры в Humanoid:

local npc = game.Workspace.NPC
local humanoid = npc:FindFirstChild("Humanoid")

if humanoid then
humanoid:SetAttribute("Aggressive", false)
end

4. Игнорирование NPC при обработке "Touch":

Если у вас есть событие Touched, которое обрабатывает взаимодействие NPC с другими объектами, вы можете добавить условие для того, чтобы NPC не атаковали друг друга:

local npc = game.Workspace.NPC

npc.Touched:Connect(function(hit)
local character = hit.Parent
if character:IsA("Model") and character:FindFirstChild("Humanoid") then
-- Проверка, является ли это NPC
if character.Name ~= npc.Name then
-- Логика взаимодействия с игроком или другим объектом, а не с NPC
end
end
end)

Заключение:

Чтобы NPC не убивали друг друга в Roblox Studio, вы должны:

Отключить коллизии между NPC.

Настроить их AI, чтобы они не атаковали друг друга.

Проконтролировать взаимодействие NPC в скриптах (например, через событие "Touched").


Попробуйте эти методы, чтобы решить вашу проблему!
Похожие вопросы