How would you accomplish this animation/keyframe task?

Howdy developers,

Today I come to you seeking advice. Let me explain the basics of my game real fast. You’re a fighter with multiple abilities. There will be many fighters to choose from, each with their own abilities. Your fighter always faces the same direction your camera is facing. Your UpperTorso and everything else above your LowerTorso face whichever way your camera is facing on the up/down axis as well. Your abilities launch where ever you click (within range, uses ray casting). Video below.


For this new fighter however, I need a sort of ‘tendril whip’ function. The player plays an animation which causes a tendril to whip out. I just have no idea about the best way to go about this. I need for the tendril to appear and disappear fluidly. I need the tendril to stay ‘locked’ to your hand, while also slapping in the direction you clicked (range of 15 to 25 studs). I also need for the player to be able to keep moving around while using their tendril whips. I’m unsure how to go about keeping the tendril both locked to your hand and also going in the direction of the click. In terms of hit detection, my plan is to use an invisible part and use :GetTouchingParts() on it in an instant before deleting it.

Is there a way to accomplish this only client-side which will replicate to everyone else? Is this something I must play as an animation on every client individually? Is there a way to make this look good in a game where a player could spin around super fast if they wanted? What would you do here?

2 Likes

Raycasts would be the way to go, when it comes to hit detection and simply welding the part on should be enough to achieve that. Along with that animations would work to creating a convincing tenderal, just look at this lovely game.
https://www.roblox.com/games/6836912458/Beast-Cutter?refPageId=365ebcfe-499a-4f55-ab0f-1d4517b84ee3
Also if you want to animate across all clients at the same time while only doing it locally simply run an animation on the server when you draw out/load the tendril then the client will be able to share it with everyone.
You could also use inverse kinematics, to achieve a function like this, I don’t know how well this plugin works as I haven’t demoed it personally but it would be able to achieve something tendril like.

With this you’d set the ownship of the part to the client to replicate it, but make sure to buff up your anticheat so you can detect if anything sus is going on.

Also here are some worth while modules to look in too as your games seam to rely on waits a lot.