You can write your topic however you want, but you need to answer these questions:
What do you want to achieve? Keep it simple and clear!
Hello developers! I am currently designing a skydive game, where you fall of from a point and you maintain your speed and slowly make your way down to the bullseye.
What is the issue? Include screenshots / videos if possible!
I’m using VectorForce, and I’m not seeing a difference in the system when I do:
Why does the difference only become noticeable on the y-axis after a force of 1500?
3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I have tried using LinearVelocity, but the character just didn’t move for some reason. I found this post saying that I should VectorForce could work for wind resistance:
You get more control if you edit the HumanoidRootParts AssemblyLinearVelocity manually in a RunService loop
With this you could just keep the Y velocity at a constant speed and keep or boost the other axes’ velocities to achieve the sky diving effect, without having to bother with adjusting vector forces.
Use a LinearVelocity to control the falling speed. LinearVelocities apply forces to make an assembly match a certain speed. You can set the LinearVelocity.ForceLimitMode to PerAxis, then set the LinearVelocity.MaxAxesForce to something like (0, 99999999999, 0). This makes it so the speed on the Y axis is controlled by the LinearVelocity.VectorVelocity (e.g. you could use a value of (0, -40, 0) here to fall at -40 studs per second).
Play a skydiving animation on the character. (No need to actually rotate the character, just make an animation that does it for you!)
To determine when the player hits the ground, use downwards raycasts every frame, a Humanoid.Touched connection, or use a Humanoid.StateChanged connection, so that you can stop the animation and destroy the linear velocity when this happens.
So uhm, how do I make like the turning radius feel a bit heavier and have the player tilt to the side they move? I’m not exactly sure how to explain, but I think you understand what I mean.
You could have Humanoid.AutoRotate turn off, then control the direction the player faces using an AlignOrientation.
I would program the AlignOrientation to slowly point the character towards the direction they’re moving.
Then, I would also program something to scale the character’s walk speed based on how close their MoveDirection is to the direction they’re facing (e.g. use Humanoid.MoveDirection:Dot(HumanoidRootPart.CFrame.LookVector) for how close the two directions are).
I also have this boolean call ‘RoundEnded’ which checks if the round is over. So, like this:
table.clear(Winners) -- clears the table of previous winners.
hasClearedTable = true
RoundEnded.Value = true
task.wait(3)
RoundEnded.Value = false
RoundEnded.Changed:Connect(function(newValue)
if newValue == true then
LinearVelocity.Enabled = false
Humanoid.JumpPower = defaultJumpPower
ContextActionService:UnbindAction("SpeedBoost")
if SkydiveAnimationTrack.IsPlaying then
SkydiveAnimationTrack:Stop(0.5)
end
end
end)
For two unit vectors, the Dot between them returns a value between [-1, 1], depending on how close the two vectors are to the same direction. If they point exactly the same direction, it returns 1, if they point exactly the opposite, it returns -1, if they are perpendicular, it returns 0.
That looks correct. I would use :ApplyImpluse instead though. Also make sure that appliedImpulse is something like desiredVelocityChange * hrp.AssemblyMass
" The sum of the mass of all the parts in this part’s assembly. Parts that are Massless and are not the assembly’s root part will not contribute to the AssemblyMass."
This makes sense. And it was what @hya123456h said earlier I believe?
Currently it still uses the default character movement. I’m planning on writing up some aerodynamic (inspired) equations to make the horizontal motion be based on the air hitting the diver then probably open sourcing it.
I’m also planning on swapping the default falling animation for this one:
Feel free to use what’s there though. I don’t have any timeline for finishing it so please don’t wait on me.
Do I even have to fire a RemoteEvent at this point, just to catch when the player is actively skydiving? Or Can I just check when the state is changed.