How would I morph a player into a non player type npc

So I have a potato, that I want to morph players into. I tried to just delete all the body parts except torso, and change that mesh, but that doesn’t work out well. I was wondering how I can do this and still allow players to have good control over their player.

2 Likes

HumanoidRootPart is your control center. Torso/Head are important for staying alive and sound etc.

Keeping them all might be necessary for modifying the body.

I haven’t tried live transformations though.

You can delete the arms and legs. Change the torso and head transparency to 1. Delete the face decal in the head.

Then weld the potato to the players humanoid root part. If you’re using R15, you will have more pieces to destroy() and set transparent.

Instead of morphing the player, you could just set the camera to the potato, hide the character, and give network ownership to the potato.

How would I do this if you care to explain.

This is a good idea, otherwise you have to regenerate the character to undo the potatofication.

2 Likes

If you don’t plan on having the character use their legs or arms, you can delete their legs and arms as @Pharyx_Styx Mentioned. You can then insert a Potato Mesh into the HumanoidRootPart and change the Potato Mesh size. Now you have a person as a potato, moving around…

EDIT: Also, as @Pharyx_Styx Mentioned again, Turn the Head and Torso Invis by setting the transparency to 1.

If you also want the player to look like they’re rolling while still giving them normal player controls, you can Instead, insert the mesh into the Torso, then animate the torso spinning. Then set that animation as a walking animation.

Pronto, a rolling potato.

At the speed of sound lol.

1 Like

To do this, you must use the :SetNetworkOwner() function. This is a function of BasePart, where you are essentially giving all movements from the potato (controlled by the client) to be replicated to the server. This means you don’t actually have to fire any remotes to update the date of the potato.

On the morph trigger, you will have to set the camera of the player to the potato. I would then continue to change the position of the character, perhaps in a place far from the map. Then, using the :SetNetworkOwner() function explained from above, we will give NetworkOwnership to the potato with the first argument being the player.

Now to actually control the movement of the potato. From my experience I haven’t really used a whole lot of ways of character movement. But this is what I have done:

In my spaceships, I would usually insert a BodyMover to control the movement of the part, preferably a BodyVelocity. I would then change the velocity to be the camera’s lookVector, rightVector or upVector based off of what was pressed. If it was forward, lookVector. If it was backward, negative of the lookVector. (You get what I mean.)

Another way that I think would work would be changing the CFrame off of the input. Not sure on how I would specifically do it, but I think you need to manipulate the camera’s vectors and such.

If you have any questions. Please ask.

How would I get the rolling part?

I’m just telling a way to fake the rolling part.

To fake it, make sure the potato mesh is inserted into the torso.

Then, animate it using the animation plugin and have it repetedly roll over. Make sure the animation is on loop also.

Once you’ve done that, set the animation as the walking state. Now if the player begins moving.
It will look as though the potato is rolling.

You might also want to change the Humanoid.HipHeight a bit lower.

You could always animate it when the NetworkOwnership is set to the potato. Play the animation when the player moves, and make the velocity control the direction.

Edit: I think that the potato will be able to roll by itself if it is getting pushed by a BodyVelocity. Not so sure if it does, but you can try it out.

NetworkOwnership set to the potato, or the potato’s NetworkOwnership set to the client? Somewhat confusing since you can’t pass ownership to any entity that isn’t a client or the server (nil).

Not trying to be nitpicky, just helps for clarification.

Sorry. I meant for the potato’s network ownership to be set to the client.