寻路脚本

Pathfinding script

提问人:Wc Thunder 提问时间:11/13/2023 更新时间:11/18/2023 访问量:32

问:

我尝试制作一个寻路脚本,但它不起作用。它说“MoveTo() 不是有效的成员路径”实例“”是因为 MoveTo() 不起作用吗,更重要的是,我有什么替代方案?

local PathFindingService = game:GetService("PathfindingService")
local Agent = game.Workspace.StarterCharacter.Humanoid
AgentRadius = 2    -- Settings Agent
AgentHeight = 5 
AgentCanJump = false
AgentCanClimb = false
AgentSlope = 10
AgentMaxAcceleration = 1000
AgentMaxSpeed = 16 
AgentArrivalDistance = 1 -- end settings agent
print(type(PathFindingService))
while true do
 if Agent then
      local destination= Vector3.new(math.random(-571,165),5.5,math.random(-495,361))
    print(true)
      
  if destination then
      
          local path = PathFindingService:CreatePath()
          
          
          if path then
              
              print(true)
              start = Agent.HumanoidRootPart.Position 
              if start then
               path:ComputeAsync(start, destination) 
               path:MoveTo(Agent) --error
                      
                      
              else 
                  print (false)
              end 
          
              
          end
          
      
  end
      
      
  end
  
  wait(5)
  
end
Lua Roblox

评论


答:

0赞 Tsering 11/14/2023 #1

您必须在代理人形机器人上使用该函数,而不是在路径变量上使用该函数。C.!MoveToAgent:MoveTo(Position)

编辑: 您必须通过调用路径实例上的方法来遍历点,而不是传递路径实例。GetWayPoints()

if path.Status == Enum.PathStatus.Success then
    local waypoints = path:GetWaypoints()
    for _, waypoint in pairs(waypoints) do
        Agent:MoveTo(waypoint.Position)
    end
end

评论

0赞 Wc Thunder 11/15/2023
感谢您解决了这个问题,但现在我有一个新的“无法将实例转换为向量 3”(在我的第一个版本中,我非常愚蠢,应该看到路径无法移动)
0赞 Tsering 11/18/2023
@wc-thunder 我刚刚编辑了答案。
0赞 Wc Thunder 11/19/2023
我已经这样做了,但是现在,它说我无法在实例(可能是路径)上执行“GetWayPoints”,我该怎么办
0赞 Wc Thunder 11/27/2023
你还在吗?
0赞 Tsering 11/28/2023
@WcThunder记住 p 较低Getwaypoints