Today I request your help with another HORSE-RELATED issue. I’m currently trying to hook up a horse system. The way it works is the horse is its own humanoid that plays standing/resting animations on its own. When you mount it, the horse becomes a part of you. The rig loses its Humanoid, Head, and HumanoidRootPart (or rather, the parts get renamed). When you dismount, those get added back. I figure this would be better on the system than continually respawning horse models.
I’ve encountered some sort of issue however. Two issues to be precise, but I think they’re rooted in the same issue.
1.) When Horse_LowerTorso is moved at all in an animation, when it plays back the player’s character’s position in relation to the horse seems to be exaggerated. Examine the 2 mp4s below.
2.) The player’s character doesn’t move with the horse. The horse moves with the character. I’d prefer if the player’s character would latch to the saddle so the horse is ‘in control’ of all movements, however this is more of a nuisance than a huge problem. I can pretty easily just move the player’s character by hand with each keyframe if needed. Issue #1 is my main concern.
How the animation looks in the editor:
How the animation looks in-game:
I’ve included a file below. Feel free to download it and mess around. The only scripts are in ServerScriptService and StarterGui. I think this is a Motor6D problem, but I still have as much of a grasp on Motor6Ds as I do on quantum mechanics. I suspect that my code for creating a new Motor6D on the fly between the horse root and the player root is the issue, but again I don’t really understand how. I used a plugin to create the horse rig. In order for the animation to work, you must load it from the Horse dummy, save it yourself, and replace the in-studio Animationid with your own uploaded version. Try it out and lemme know what you find. If both issues here could be solved then I’d be ecstatic. I appreciate any and all responses.
Horse_Testing1.rbxl (116.5 KB) I made the horse mesh for my own game however so please don’t hand it out to a bunch of people. I appreciate it a lot.
This can be taken care of by making the character a part of the horse instead of the horse becoming a part of the character. Or by simply welding the character’s RootPart to the horse’s saddle or whatnot meaning you wouldn’t need to remove any humanoid.
I’d like for the horse + character combo to all be on the same animation however. For example the idle, trot, and gallop animations would include both the horse and the character. Is that still possible with your suggestion?
I found a solution to the issue, you need to make the join that you are editing with to
C0 = CFrame.new(Vector3.new(0,0,0)) C1 = CFrame.new(Vector3.new(0,0,0))
Then you won’t need to mess with the moter6d except for changing it’s Part1 and Part2.
Also messing around with the character like you are doing is bound to cause you many issues down the line.
Feel free to contact me JackLossesHisSanity#5800 on discord or just use the dev forms’s messages. (my time zone is AEST but expect me to be up until 12 pm (on discord only))
After consideration, I’d rather not weld the player to the saddle since it wouldn’t allow me to animate the player + horse as a single entity.
Does anyone here have experience in Motor6D? In the idle animation I simply bob the Horse’s UpperTorso up and down to mimic breathing. Below:
But for some reason as soon as I instance a new joint between the horse’s root and the player’s root (player being the parent here), the same breathing animation makes the LOWERTORSO move for some reason, and the lowertorso refuses to move normally in the jump animation.
So that means you haven’t changed anything within the horse itself?
The current way you are doing it is going to lead to a lot of unintended side affects.
You’re saying the connecting joint between the player and horse are different in the animation rig vs the in-game connected version? How would you remedy this?
You can use the command bar to manually change the root joint’s CFrame.
workspace.Horse.Horse_Root.Joint.C0 = CFrame.new(Vector3.new(0,0,0)) workspace.Horse.Horse_Root.Joint.C1 = CFrame.new(Vector3.new(0,0,0))
This should change the rig’s cframe.
Then for the other one you can just remove the joint.C = because it will be 0,0,0 by default
Could you send over a screenshot of the explorer along with a print of the horses cframes?
Also wouldn’t it be easier to get in a call, I’m in the atf discord fyi.
I just need to root parts Joint CFrame that connects the person with the horse which the code for is here (also very nice use of Instence:GetFullName())