Orbiting Platforms

Hello!
This is what I want to achieve:

As you can see, the platforms are spinning around a central part BUT their orientation does not change. I could do this with scripts but then the platforms would not carry the players, so I need help with making these platforms orbit like this with hinges, constraints, whatever you have to use to make them spin like this, or maybe a way to make this with scripts while it still carries the player.
Thanks in advance!

Perhaps just use the etoh kit? It might have been updated recently.

The EToH kit doesn’t have this type of spinning platforms, each developer has to make them themselves.

That’s dumb because these are used ALOT in Etoh, well good luck.

  1. Build this contraption
  2. Attach HingeConstraints on where both the red and blue lines are at
  3. Make sure blue line HingeConstraint has a set AngularVelocity (its in properties)
  4. Coding (Attach this to the platform)
local runservice = game:GetService("RunService")

runservice.Heartbeat:Connect(function()
	script.Parent.CFrame = CFrame.Angles(0, 0, 0)
end)
1 Like

This script locks the platform in a position in the world, it doesn’t lock it’s rotation :sob:
Thanks for the help nonetheless

Instead of updating the CFrame I updated the rotation and it kinda works but there’s another problem now:


It carries the player in a very weird way, as if the platform itself was spinning even though it isn’t.

You could use this as an actual obstacle you know that could work. Unintended bugs can sometimes be used as an actual mechanic!

I mean, yeah, but, It’s pretty obvious it’s a bug and, even if I wanted to use it, it’s supposed to be a low-mid easy obby so I wanted the platforms to carry the player in a normal way.

Oh yeah this would not pass on an easy tower well best of luck.

Sounds to me like a casual physics engine thing from roblox..


I have some solutions that could work:

  • BodyAngularVelocity

You basically are canceling out ‘angular velocity.’ It also will effectively freeze the character’s rotagion, as What I am seeing in this video…


This is an example code about BodyAngularVelocity and its use

local character = game.Players.LocalPlayer.Character
local platform = game.Workspace.Platform

-- Create a body angular velocity to cancel out the platform's angular velocity
local bodyAngularVelocity = Instance.new("BodyAngularVelocity")
bodyAngularVelocity.AngularVelocity = platform.AngularVelocity
bodyAngularVelocity.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyAngularVelocity.Parent = character.HumanoidRootPart

It may not be your most EFFICIENT solution, as it could cause some weird things, so my next proposal is this;

  • Character alignment

Using CFrame to align the rotation of the character with the platform, in hopes of freezing the rotation of the character.


This is an example code about CFrame being deployed for this purpose


-- Get the character and the platform
local character = game.Players.LocalPlayer.Character
local platform = game.Workspace.Platform

-- Create a cframe to align the character's rotation with the platform's rotation
local cframe = platform.CFrame
local characterCFrame = character.HumanoidRootPart.CFrame

-- Align the character's rotation with the platform's rotation
characterCFrame = cframe * characterCFrame
character.HumanoidRootPart.CFrame = characterCFrame

Can you try using one of these solutions and see if it resolves the issue? If not, please provide more details regardinh the platform’s movement mechanics, and I’ll do my best to help you troubleshoot the issue.
Another thinf I want to ask is if you used the aforementioned script from @grimmerschool2 and is resulting in this?
Thanks.

1 Like

I will try these options when I can, and I will show you the spinning weld platforms hierarchy (when I can)

Kind of, as I mentioned in a previous reply setting the CFrame would just lock the platform in 0,0,0 position so instead I changed it to set the rotation of the platform to 0,0,0, which gave me the result I sent in a reply: it visually works how I want but it carries the player in a weird way.


This is the spinning platforms’ structure

Try settings the angular velocity before the physics are done? Maybe use RunService?

Yeah I tried setting the assembly angular velocity to 0 with run service but if I do so, the platforms don’t carry you at all

Bump because I still need the solution, thanks

I managed to find the solution so I will post it right here for people who are looking for the solution. It involved AlignOrientations, BallSocketConstraints instead of Welds, fitting the Motor inside each platform and modifying each platform’s physics properties.
Orbiting Platforms.rbxm (7.6 KB)
(Also the collision groups of these platforms were modified for my game, just change them to “Default” if you use them)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.