Сейчас я сейчас пытаюсь использовать алгоритм альфа-бета-обрезки, который обычно используется в шахматах. Я мог бы разбить корт на сетку, но это только в теоретическом состоянии.Так что, если у кого-нибудь из вас есть какие-либо предложения для Защитного и Наступательного Ай для баскетбола, это будет высоко оценено.Я пытался найти код, который помог бы запустить npcs на известных баскетбольных играх, таких как 2k и NBA Live, но у меня не получилось, поэтому я забираю то, что я могу получить сейчас.
Сейчас npcs просто работает с позиций, которые яустановить в соответствии с пьесами, которые я придумал сам, но это довольно неэффективно и предсказуемо, оборонительный Npcs использует Pathfinding, чтобы добраться до позиции между нападающим противником и целью
local RunService = game:GetService("RunService")
local HB = RunService.Heartbeat
local module = {}
module.PathFind = function(OppositeTeam ,Team, ActualPlayer)
while script.Parent.Configuration.Possesion.Value == false do
local PathfindingService = game:GetService("PathfindingService")
local Humanoids = {}
local Parents = {}
local Defense = {}
for OtherTeam, Player in pairs(OppositeTeam) do
if Player:IsA"Humanoid" then
if Player.Parent ~= "1" then
table.insert(Defense, Player.Parent.HumanoidRootPart)
end
end
end
for TheTeam, Player in pairs(Team) do
if Player:IsA"Humanoid" then
if Player.Parent.Name ~= ActualPlayer then
print(ActualPlayer)
table.insert(Humanoids, Player)
table.insert(Parents, Player.Parent)
end
end
end
local Path = PathfindingService:CreatePath()
for OT = 1, #Humanoids do
local Character = Defense[OT]
local Goal = Character.Position + (script.Parent.Configuration.Goal.Value.Position - Character.Position).Unit * 5
Path:ComputeAsync(Parents[OT].HumanoidRootPart.Position, Goal)
local points = Path:GetWaypoints()
if Path.Status == Enum.PathStatus.Success then
for i, marker in pairs(points) do
Humanoids[OT]:MoveTo(marker.Position)
if marker.Action == Enum.PathWaypointAction.Jump then
Humanoids[OT].Jump = true
end
end
end
end
HB:Wait()
end
end