How to improve collision physics within my coin pusher?

I’m attempting to create a coin pusher machine, however, the physics prove to be kind of finicky as demonstrated with this clip:

https://gyazo.com/07c7f1fb6346c2fb60e745e1647c1fb8

The “pusher” is using a CFrame Tween to move, I believe this to be the issue as interactions between the other coins works without problem, but if a coin lands on the pusher as it’s moving, it seems to “freeze” it’s physics until left alone for a second.

This is the script that manages the pusher:

local tws = game:GetService("TweenService")
local part = script.Parent

local cf = script.Parent.CFrame


local AnimDuration = 5
local isActive = true
local paramsF = 
{CFrame = cf * CFrame.new(0,0,10)}
local paramsB = 
{CFrame = cf * CFrame.new(0,0,-10)}

local TweenF = tws:Create(script.Parent, TweenInfo.new(AnimDuration), paramsF)
local TweenB = tws:Create(script.Parent, TweenInfo.new(AnimDuration), paramsB)


while true do
    if isActive then
        cf = script.Parent.CFrame       
        paramsF = 
        {CFrame = cf * CFrame.new(0,0,10)}
        TweenF = tws:Create(script.Parent, TweenInfo.new(AnimDuration), paramsF)
        TweenF:Play()
        wait(AnimDuration)

        cf = script.Parent.CFrame
        paramsB = 
        {CFrame = cf * CFrame.new(0,0,-10)}
        TweenB = tws:Create(script.Parent, TweenInfo.new(AnimDuration), paramsB)
        TweenB:Play()
        wait(AnimDuration)
    end
end

I am aware that the problem is due to the parts not waking up for physics calculation but I’ve got no idea on how to solve it.

Here’s a demonstration of the parts that are awake being highlighted.

TweenService is never great when working with anything that requires physics, its buggy, glitchy, and of course, usually leads to issues like these.

If you want to somewhat fix this, you can create bigger planes that detect the part beforehand somehow that are coming in contact and constantly updating it with a bodymover/etc?

Or make the pusher physics based as well, best option though may be buggy in certain cases :man_shrugging:

Or if you wanna go overkill, update both with some complicated physics math that I can’t help you on so good luck :+1:

If you plan to go for more overkill methods, I’d recommend doing visual effects on the client of course, and actual movement/actions on the server, the complicated handling.

Hey could you elaborate on what you mean by bigger planes?

You can keep the size as the coins as usual but at the same time, add another part that is bigger than the coin by a stud or so. Then have a touched function or something similar to detect and update the coins to move as so when it gets to the right part/contact.