Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why is my Pseudo character bouncing off moving walls?

Asked by
pajotg 0
6 years ago

Im trying to have my character stay on a moving platform, but each time i come close to a wall i bounce off,

what im doing is getting the CFrame of the platform, And each time it changes, change the CFrame of the character accordingly.

It works fine for platform's that are anchored and then the cframe is set, but not for parts with velocity,

Here's the code:

local function UpdateMovingBlock(NewCheck)
    debug.profilebegin("Moving block update")

    local NewPosition = NewCheck
    local StandingOnCFrame = StandingOn.CFrame

    if StandingOnLastCFrame ~= StandingOnCFrame then
        NewPosition = StandingOnCFrame:toWorldSpace(StandingOnLastCFrame:toObjectSpace(NewCheck))
    end

    local StandingOnContinued = Workspace:FindPartOnRayWithIgnoreList(Ray.new(NewPosition.p,Down*10),Ignore) or Workspace.DefaultStandingOnPart
    if StandingOnContinued == StandingOn then
        NewCheck = NewPosition
        HumanoidRootPart.Velocity =  StandingOnCFrame:vectorToWorldSpace(StandingOnLastCFrame:vectorToObjectSpace(HumanoidRootPart.Velocity))
    else
        if UpdateMovingBlockEvent then
            UpdateMovingBlockEvent:disconnect()
        end
        StandingOn = StandingOnContinued
        StandingOnCFrame = StandingOn.CFrame
        UpdateMovingBlockEvent = StandingOn.Changed:connect(function(v)
            if v == "CFrame" then
                HumanoidRootPart.CFrame = UpdateMovingBlock(HumanoidRootPart.CFrame)
            end
        end)
    end

    StandingOnLastCFrame = StandingOnCFrame
    debug.profileend()
    return NewCheck
end

Every frame this function gets called with the current CFrame, and returns a new CFrame

Anny idea's on how to make the non-Anchored parts behave the same as the anchored parts?

Answer this question