Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

CFrame bugs out the whole model?

Hi there!

Video for Reference

I am trying to make a train simulator. I know what I am doing in regards to making the train move along a track. I am also aware on how to control the doors to work, so when you press a button, a FOR loop changes the CFrame of multiple objects in specified directions.

However the doors do work (in their own isolated model), as you have seen in the video linked above. However as soon as I place a block beneath, model the part to the model so the tree looks like:

-Model
    - Part 
    - Train Model 
       - Train Door's parts

Then I weld that part to the door parts. And press the button to open the doors. The door and the part attached completely bugs out and flies away.

Please help me, I've been stuck on this for DAYS.

The OPEN DOOR script

locked = script.Parent.Parent.Locked
open = script.Parent.Parent.OpenValue
door = script.Parent.Parent.Door
left = door.left
right = door.right

function onClick()
    if locked.Value == true then
        return
    elseif locked.Value == false then
        if open.Value == false then
            open.Value = true
            for i=1, 21 do
                stuff = right:GetChildren() 
                stuffL = left:GetChildren()
                for i=1, #stuff do
                    if (stuff[i].className == "Part") or (stuff[i].className == "WedgePart") or (stuff[i].className == "UnionOperation") then
                        if (stuff[i].Name ~= "Button") then
                            stuff[i].CFrame = stuff[i].CFrame * CFrame.new(0.1,0,0)
                        end
                    end
                end
                for i=1, #stuffL do
                    if (stuffL[i].className == "Part") or (stuffL[i].className == "WedgePart") or (stuffL[i].className == "UnionOperation") then
                        if (stuffL[i].Name ~= "Button") then
                            stuffL[i].CFrame = stuffL[i].CFrame * CFrame.new(-0.1,0,0)
                        end
                    end
                end
                wait(0)
            end
        elseif open.Value == true then
            return
        end
    end
end


script.Parent.Click.MouseClick:Connect(onClick)

6 comments

0

I have also tried using a weld script to weld the object to the parts I want. But same result. It only seems to work when it ISN'T welded to the part.

0

Is this your script?

0

Yes

0

It seems to only work with the weld when the model is anchored, when no parts, other than the parts I am Cframing, move. It works fine without the weld (Anchored and Unanchored).

0

However there's not much of a workaround that I know of because the parts need to be welded and unanchored, as a train cannot move when anchored, and falls to bits when it's not welded.

0

I've tried various weld scripts, and as seen in the video, manually welding the part to the doors.

1 answer

✓ Accepted answer

Discord : CoreyHimself#7545

This discussion is preserved as it was. New answers, comments, and votes are closed.