How to make synced cutscenes?

Hello, I’m seeking advice on how someone can make a cutscene with synced sound effects and camera movements and animations with other characters. It also doesn’t help that if, let’s say I wanted a character to move to a certain location within my animation, the animation editor seems to be limited to how far you can move something, and relies on you just scripting the movement using “humanoid:MoveTo” or else they get teleported back to where they were originally. It doesn’t really seem like roblox offers much to help out in that and has to be done in repeated trial and error, til you get the results you want using a script. But it is pretty hard to get the results when you can’t visualize what you are doing. I haven’t found a way to do this optimally so far… so I’m wondering if anyone out there has figured out a way to achieve this more easily and can offer advice and tips. Thank you all who do reply.

3 Likes

Are you scripting the entire animation or you using an animator? (Roblox’s animator or Moon Animator)

I use moon animator. I’ve made some cutscenes before but only using the camera. I’ve synced text to it but it was really messy doing it all in a script trying to figure out the correct “wait(X)” values I should even be using watching the cutscene over and over til I got the result I wanted. I feel like there has to be a better way.

Well you can get when the animation has ended using

local animation = --pretend there's an animation

animation:Play()
animation.Ended:Wait()
-- do something

Other than that, I’m fairly certain you can just make a whole cutscene and have that play out.

I know about the ended event on animations, but it still seems like a very tedious way to accomplish this. But I guess if there really is no other way then I guess it’ll have to do unfortunately. Wish there was better tools to accomplish cutscenes. But if that’s how some of the people who I’ve seen on youtube make some of these cool first person cutscenes did this, then they definitely must have a ton of patience trying to get everything synced correctly.

Sorry for the late reply but this is how I go about it:
when adding or editing a rig, turn on animation events

image

then insert an event for each time something happens (I recommend writing the names down somewhere so you don’t have to go back to the animation to check)

image

after you’ve exported the animation, you can use AnimationTrack:GetMarkerReachedSignal(“name”) which fires when you reach it

this works with roblox’s animator too, you just have to right click and add an animation event

image

also if you’re animating with multiple rigs, make sure you’re listening for animation events on the right one

here’s a link to the documentation which gives a more in-depth explanation on GetMarkerReachedSignal:

you can also use KeyframeReached which fires when the animation reaches a keyframe that isn’t named “Keyframe”
image

oh yeah also use task.wait() instead of wait()

2 Likes

Thanks for the detailed reply. Just one question, when I am animating the camera for my cutscene, I want to make a jump to a difference angle instantly. How exactly would I go about doing that? Since I’m assuming setting the next position that I’d like the camera to jump to would make move over to position rather than instantly appearing where I would want it. Hope you can understand what I mean.

1 Like

you can do that by setting the Easing Style to None in moon animator, or Constant as it’s called in roblox’s animator

image

image

so it’ll reach the keyframe and instantly cut to the position

Thank you very much, I’ll try this out and see if I can achieve what I’m trying to do. Appreciate it!

1 Like

I made a pretty simple cutscene where a npc is supposed through fall through the ceiling however, sometimes in game it will work fine as I intended, then sometimes in my playtesting, it won’t play the animation as I intended and it seems to just be stuck above the ceiling. I do not understand what could be wrong there, as nothing was done to change the collisions at all to the ceiling or anything. It’s a very strange error that I can’t find any solution to for a consistent animation experience. I hope maybe you could have an answer or advice as to why?

Here’s the intended outcome:

Here’s the unintended outcome which seems to happen at random after multiple playtests:

I don’t know how to fix that issue, it looks like an animation playback error
all I can really suggest is making sure humanoidrootparts are anchored, model scale is set to 1, and nothing else is interfering with the animation
it seems like it only breaks when the npc is supposed to fall down, so maybe try changing the keyframes for it going down

1 Like

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