提问人:Wc Thunder 提问时间:11/13/2023 更新时间:11/18/2023 访问量:32
寻路脚本
Pathfinding script
问:
我尝试制作一个寻路脚本,但它不起作用。它说“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
答:
0赞
Tsering
11/14/2023
#1
您必须在代理人形机器人上使用该函数,而不是在路径变量上使用该函数。C.!MoveTo
Agent: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
评论