Making Tweened Platforms Move Parts

I’ve been attempting to make a tweened platform that can transport both parts and players, which has led me to setting the AssemblyLinearVelocity and AssemblyAngularVelocity properties of the platform every step (ie. connecting this function to RunService.Stepped). Parts initially didn’t move with the platform, so I fixed that by setting the parts’ AssemblyLinearVelocity and AssemblyAngularVelocity properties to the platform’s.

This setup carries a couple of issues I’ve yet to solve. The most critical of which is that the parts lag behind the platform when updating their velocities. This is an issue in 2 aspects. One, is that it doesn’t look quite as good as I’d like it to be. Two, and more importantly, when the platforms move too fast and the part stops touching the platform, the part drops down when I don’t want it to, which occurs most frequently when the platform rotates and the axis of rotation is not through the center.

The documentation acknowledges this and suggests I use either mover constraints or the impulse methods instead, but I’ve tried that out and concluded that they present their own set of problems. Mover constraints are a bit too limiting for my use case, but I feel if I knew a bit more about impulse, those methods could indeed be a viable alternative.

All in all, should I improve on the current system I have in place or try to figure out how impulse would work? How would I go about either of these solutions? For the impulse one in particular, how would I handle the 0 seconds of change in time to calculate the impulse and 0 kilograms of mass to calculate the change in momentum?

I found that this takes an awful lot of creating my own physics engine. I gave up when it got to the point of figuring out how to make it work beyond just parts directly touching the platform. I decided the best course of action is to just adapt my system to use Studio’s existing physics solver since I was already using part of it to try and create the aforementioned physics engine. To fix the issue I mentioned in the initial post, I remembered collision groups existed and plan to put all parts that the platform shouldn’t collide with into it. I’ll mark this as the solution if I successfully implement this. Feel free to offer other solutions while I do that.