How would i make PathfindingService not take such sharp turns around obstacles?
I want it to be smooth because it just looks weird and unnatural when it goes 90 degrees instantly around a turn.
: /
local PathfindingService = game:GetService("PathfindingService")
local Workspace = game:GetService("Workspace")
-- Hedef konumu
local targetPosition = Vector3.new(10, 0, 10)
-- Başlangıç konumu (örneğin, karakterin konumu)
local startPosition = Vector3.new(0, 0, 0)
-- Pathfinding özelliklerini ayarla
local path = PathfindingService:CreatePath({
AgentRadius = 2, -- Karakterin boyutuna uygun bir yarıçap ayarlayın
AgentHeight = 5, -- Karakterin boyutuna uygun bir yükseklik ayarlayın
AgentCanJump = false, -- Karakterin zıplayıp zıplamayacağını belirleyin
AgentJumpHeight = 0, -- Karakterin zıplama yüksekliğini belirleyin
AgentMaxSlope = 45, -- Karakterin tırmanabileceği maksimum eğimi belirleyin
})
-- Yolu hesapla
path:ComputeAsync(startPosition, targetPosition)
-- Yolu al
local waypoints = path:GetWaypoints()
-- Karakterin takip edeceği pürüzsüz bir yol oluştur
local smoothPath = {}
for i = 1, #waypoints do
local point = waypoints[i].Position
local nextPoint = waypoints[i + 1] and waypoints[i + 1].Position
if nextPoint then
local direction = (nextPoint - point).Unit
local distance = (nextPoint - point).Magnitude
local count = math.ceil(distance / 5) -- Yol noktalarının arasındaki mesafeyi ayarlayın
for j = 1, count do
table.insert(smoothPath, point + direction * (distance / count * j))
end
else
table.insert(smoothPath, point)
end
end
-- Karakterin takip edeceği pürüzsüz yolu kullanarak karakteri hareket ettirin
local function moveCharacterSmoothly(character, path)
local currentPositionIndex = 1
while currentPositionIndex <= #path do
local currentTarget = path[currentPositionIndex]
local distance = (currentTarget - character.PrimaryPart.Position).Magnitude
-- Karakterin hedefe doğru hareket etmesi için kodu buraya ekleyin
-- Örneğin: character:SetPrimaryPartCFrame(CFrame.new(currentTarget))
-- Karakter hedefe ulaştıysa bir sonraki hedefe geç
if distance < 0.5 then
currentPositionIndex = currentPositionIndex + 1
end
wait(0.1) -- Karakterin yavaşça hareket etmesi için bir bekleme ekleyin
end
end
-- Pürüzsüz yolu kullanarak karakteri hareket ettirin
moveCharacterSmoothly(game.Players.LocalPlayer.Character, smoothPath)
2 Likes