Move player during montage animation.

About none root motion in place animation sets?
I have a character with 0,0,0 animations so I made a montage of the anim sequence of entering a vehicle.
only the actor doesn’t get in because there is no root motion.

would it be possible to move the character root bone from a certain point in the montage animation, say to a bone in the drivers seat
and match that movement time with the montage clip.

I’m still researching how to do this bp, moves my player to a target.

You probably want to do an VInterpTo starting at the characters current position and targeting the bone/socket in the vehicle. Docs for this node: VInterp To | Unreal Engine Documentation

You could probably just put some anim notifies in the montage and then trigger the VInterpTo

I’m doing something quite similar with success. I have a combo system where each attack is defined as a section in a huge montage. Each attack can push the character, moving them either forward or backward, which I believe is the same problem you want to solve. I’m using custom notifies inheriting from AnimNotify to send an event to the character class. They have public variables specifying a scale and an interpolation speed. Scale is used to move the character in the direction they are facing, and the interpolation speed is used to lerp between the target and current moving speeds.

I confess I did not look at your Blueprint code, but from your description you will want to parent the character to the car so they move in unison. You could create a socket for the car and attach the character to that slot, similar to how I attach a sword to the character’s hand.

All of my work is built from tutorials, my blueprint to move actor was only tested inside the level blueprint.
I have a vehicle bp and character bp. my code for entering montage is inside the character bp.

@Godbosa,
How do I target the bone/socket inside the vehicle bp, from the character bp.
I have set anim notifies at the start of get in car anim.
I’ve also got an arrow component connected to the driver seat.
When I get Driver Seat, I don’t know what to do with the pins.
do you have a visual example.

@DanteWingates

“parent the character to the car” could you explain how to make the character a child blueprint of the vehicle?.
any chance you can post details of your combo system, so I can see how you set it all up.

This is where my montage begins, Ive unplugged it to test getting the actor to move when enter car sequence starts. I don’t know how to plug the VInterp Target to the Driver Seat bone/socket.

1 Like

Provided you can reference the car, all you have to do is get its skeleton and then retrieve the desired socket’s transform or location. To attach/parent you would use the skeleton as the target component and the name of your socket as the target socket. Try to isolate the main problems first. For instance, try to print the name and coordinates of the socket from the character, or the character’s coordinates from the car. If you can do that there is no reason you can’t do the rest.

Can you interpolate the character to the driver’s seat position without worrying about any animation? In fact, you don’t need to interpolate at all, just teleport the character to the right place first. If you don’t know how to do that, then it doesn’t have to do with montages, it has to do with not knowing where to get the information you need from and what to do with it. If you can do that, then it has to do with not knowing how to respond to notifies. Pinpoint the problem then research.

I’ll give you an example of how this system could work. Imagine we define a volume around the car. The volume knows what car it references by definition. If you press a predetermined action key inside that volume, it receives whatever character is interacting with it as a parameter. It can then trigger a callback in the car, passing the character as a parameter, or it can trigger a callback in the character with the car as a parameter. The callback would then parent the character to the car, triggering whatever animation it needs to run. The montage would trigger an event at the precise point the vector interpolation should take place, and since you already have a mechanism to tell what car you’re interacting it, it’s just a matter of knowing what functions to call.

My game uses a custom character movement component which moves the character always in relation to the player’s point of view. It is angle based and locked to a plane of movement. The character has a native C++ function called Push() which pushes the character in a desired direction. I have a notify called SetPushScale_AN that sends the PushScale and the InterpolationSpeed to the character blueprint. The character blueprint interpolates between the current PushScale and the newly received TargetPushScale using the InterpolationTime. This doesn’t interpolate the character between two vectors, like you want to do.

A better example would be if I wanted to have execution animations or cinematic attack animations. That would be the exact same problem you’re having. In my case, I already have a SetAttackProperties_AN notify that let’s me specify whether an attack should trigger a special animation. I’d just put a socket in front of my main character, which would be where I’d teleport the enemy character to. I wouldn’t need to interpolate, but it’s the same. The question is: what enemy do I execute? The weapon’s hitbox can tell me that, so I’d have a variable to reference an enemy or even a collection of enemies the last attack successfully landed on. With this information, I have all I need to implement it such a gameplay feature.

I speak in such general terms because I’m no UE4 expert, I don’t really know all the provided functionality, but I’m used to reading documentation and source code. With time, frameworks are all the same. The specifics change, but the concepts are universal. That’s what I’m trying to relay to you. Just so you don’t say I didn’t send you some nodes though, take a look at Get Socket Location, Get Socket Transform, and Attach to Component, and make sure you understand what the parameter Target, which is usually set to “self”, means.

I would recommend taking a look at this Tutorial (Blueprint Communications | Live Training | Unreal Engine - YouTube) to better understand how blueprints communicate, you should be able to apply some of the things you learn to solve this problem. If you are still stuck after I can take a better look when I’m not at work.

Also just had a look at your screenshot, you most likely want to use GetSocketLocation to find the target you want to interp to.

My character moves to the seat socket okay now, Still not sure how attach an animation.
Getting in and closing the door is 1.815 seconds I need to limit the VInterp move time to match.

This is the flow from start to finish.

I think the interp speed is a multiplier to 1 so the equation to work out how long it takes is: 1 / InterpSpeed = Delay. For example 1 / 0.5 = 2. So that should give you an interp over 2 seconds (i think).

I have this problem that character I imported to ue4 keeps walking even in ue4 preview mode even when it keeps jumping.