какие алгоритмы лучше всего подходят для NPC в баскетбольном матче? - PullRequest
0 голосов
/ 22 июня 2019

Сейчас я сейчас пытаюсь использовать алгоритм альфа-бета-обрезки, который обычно используется в шахматах. Я мог бы разбить корт на сетку, но это только в теоретическом состоянии.Так что, если у кого-нибудь из вас есть какие-либо предложения для Защитного и Наступательного Ай для баскетбола, это будет высоко оценено.Я пытался найти код, который помог бы запустить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...