So i'm making a bezier curve script, and I have the rotation set up, and it looks fine, no errors, but the bricks don't rotate! It works for Position, and I don't know why it isn't working for Rotation. Any help? Here is the script:
bc={} rbc={} p1={game.Workspace.Start1.Position,game.Workspace.Cont1.Position,game.Workspace.Start2.Position} p2={game.Workspace.Start2.Position,game.Workspace.Cont2.Position,game.Workspace.EndStart.Position} r1={game.Workspace.Start1.Rotation,game.Workspace.Cont1.Rotation,game.Workspace.Start2.Rotation} r2={game.Workspace.Start2.Rotation,game.Workspace.Cont2.Rotation,game.Workspace.EndStart.Rotation} function CreateLerpsP1() for i=1,10 do local t = i/10 bc[i] = p1[1]*(1-t)^2+2*p1[2]*(1-t)*t+p1[3]*t^2 end for i=1,10 do local t = i/10 rbc[i] = r1[1]*(1-t)^2+2*r1[2]*(1-t)*t+r1[3]*t^2 end for i=1,10 do local t=Instance.new("Part",workspace.CurTrack) t.Name="TrackPoint" t.BrickColor=BrickColor.Blue() t.Anchored=true t.CanCollide=false t.Size=Vector3.new(4,1,2) t.TopSurface=Enum.SurfaceType.Smooth t.BottomSurface=Enum.SurfaceType.Smooth if i~=1 then t.CFrame=CFrame.new(bc[i]:Lerp(bc[i-1],0.5),bc[i]) t.Rotation=Vector3.new(rbc[i]:Lerp(rbc[i-1],0.5),rbc[i]) else t.CFrame=CFrame.new(bc[i]:Lerp(p1[1],0.5),bc[i]) t.Rotation=Vector3.new(rbc[i]:Lerp(r1[1],0.5),rbc[i]) end end end function CreateLerpsP2() for i=1,10 do local t = i/10 bc[i] = p2[1]*(1-t)^2+2*p2[2]*(1-t)*t+p2[3]*t^2 end for i=1,10 do local t = i/10 rbc[i] = r2[1]*(1-t)^2+2*r2[2]*(1-t)*t+r2[3]*t^2 end for i=1,10 do local t=Instance.new("Part",workspace.CurTrack) t.Name="TrackPoint" t.BrickColor=BrickColor.Blue() t.Anchored=true t.CanCollide=false t.Size=Vector3.new(4,1,2) t.TopSurface=Enum.SurfaceType.Smooth t.BottomSurface=Enum.SurfaceType.Smooth if i~=1 then t.CFrame=CFrame.new(bc[i]:Lerp(bc[i-1],0.5),bc[i]) t.Rotation=Vector3.new(rbc[i]:Lerp(rbc[i-1],0.5),rbc[i]) else t.CFrame=CFrame.new(bc[i]:Lerp(p2[1],0.5),bc[i]) t.Rotation=Vector3.new(rbc[i]:Lerp(r2[1],0.5),rbc[i]) end end end CreateLerpsP1() CreateLerpsP2() game.Workspace.Start1.Changed:connect(function() game.Workspace.CurTrack:ClearAllChildren() CreateLerpsP1() CreateLerpsP2() end) game.Workspace.Cont1.Changed:connect(function() game.Workspace.CurTrack:ClearAllChildren() CreateLerpsP1() CreateLerpsP2() end) game.Workspace.Start2.Changed:connect(function() game.Workspace.CurTrack:ClearAllChildren() CreateLerpsP1() CreateLerpsP2() end) game.Workspace.Cont2.Changed:connect(function() game.Workspace.CurTrack:ClearAllChildren() CreateLerpsP2() CreateLerpsP1() end) game.Workspace.EndStart.Changed:connect(function() game.Workspace.CurTrack:ClearAllChildren() CreateLerpsP2() CreateLerpsP1() end)
So let's say that the variables cf
and rot
represent the CFrame/rotation you're trying to set.
try doing this:
t.CFrame=CFrame.new(cf.p,rot) --using .p changes the CFrame to a Vector3
EDIT: I mean something like this
if i~=1 then t.CFrame=CFrame.new(bc[i]:Lerp(bc[i-1],0.5),bc[i],Vector3.new(rbc[i]:Lerp(rbc[i-1],0.5),rbc[i])) else t.CFrame=CFrame.new(bc[i]:Lerp(p1[1],0.5),bc[i],Vector3.new(rbc[i]:Lerp(r1[1],0.5),rbc[i])) end
Basically you're just tacking on the Rotation lines to the end of the CFrame lines.