Not sure if this belongs here or building support but I’m doing it all through a script so I’ll post here. If it doesn’t belong here let me know and I’ll move it.
So basically I have a script that creates a bunch of client-sided physics objects but recently I ran into a conflict with the script between moving parts and conveyors. For some reason, applying an AlignPosition to the part/trying to unanchor it resets its AssemblyLinearVelocity. Is there any way to have this not happen?
So basically the circled part in this image moves with an AlignPosition, but there should be an additional 250 stud per second velocity for parts that are touching it (a conveyor). However, because it is moving based on physics objects, its AssemblyLinearVelocity gets reset to about 3.7 studs per second.
Any way to get it to move as well as apply an additional velocity to the player?
I am thinking of a way to do this with MOSTLY physics, with one collision intervention.
I suppose you could make an invisible conveyor part, and using collision groups, only allow the green part to collide with the conveyor part/s. Therefore, it’ll move atop of an invisible part that players, or other parts, cannot “feel” nor move along with.
Just use a PrismaticConstraint.
It’s Physics based, you can change the speed however you want, and your player will stand on it when it moves.
I made a simple model as a guide for another person asking the same question here:
<PlatformModel - Roblox
So the thing with this is that the conveyor that is moving also returns back to the player, so it moves first in one direction then moves back to the player. If there was only a single invisible, uncollidable conveyor, it would just move in one direction then fall off. Speaking of falling off, I fear that the part could be pushed off if the player were to hang off the side or something. Any ideas for that?
When you try to change the AssemblyLinearVelocity property, it just reverts back to 18 in the Z axis.
You can create a non-collidable “barrier” that surrounds the moving platform. And, once again, ensure that the platform COLLIDES with the barrier parts, but the PLAYERS do NOT COLLIDE with the barrier parts. Therefore, the player would be standing on the platform part, and be standing IN a barrier part at the same time.
Color 1: The invisible conveyor parts. They have a velocity that guide the unanchored platform.
Players can NOT collide with the parts.
Platform DOES collide with the parts.
Color 2: The platform that moves. It is kept within a barrier between the conveyor/barrier parts from color 1.
Players DO collide with the platform.
Platform DOES collide with the conveyor/barrier parts (color 1).
DON’T use the AssemblyLinearVelocity to move the Part on the PrismaticConstraint. Set it to Servo and it’ll move by itself.
Have a look at how my model works and tell me I’m wrong…
I think this would be a cool idea however the only thing that I’m concerned with is that I’m unsure how to have the conveyor keep applying velocity to parts that touch it as well. Since it’s unanchored, it just inherits the velocity of whatever parts it is on top of, and thus its AssemblyLinearVelocity is set and isn’t modifiable. Since the conveyor part itself is unanchored, it can’t have its AssemblyLinearVelocity property change without affecting its own position. So your implementation would work for moving the part iself, just not applying an additional velocity to whatever is touching it.
I did look at your model. How would I make the moving part a conveyor without using AssemblyLinearVelocity?
Sorry, I didn’t realize you were trying to get it to act like a moving platform with a conveyor on it as well.
What if you put a VectorForce into the items on the platform that push them in the direction you want. Set the VectorForce ActuatorRelativeTo.World so the direction is always pointing the same way as your conveyor would.
Yes. You can script the sequence where each panel rotates around the opposing side, where it either goes upside-down or rightside-up, then just physically simulate it once it’s back to being flat and not revolving.