Can't change the players character

I’m trying to change the players character to a zombie model but the code I wrote doesn’t work and I cant figure out why.

I looked at similar posts but the ones I looked at seemed to just use:

player.Character = <new character model>
local RS = game:GetService("ReplicatedStorage")

local Zombie = {}
Zombie.__index = Zombie

function Zombie.new(player)
	local self = setmetatable({}, Zombie)

	self._char = player.Character
	self._zombieModel = RS.Content.Zombies[player.Stats.SelectedZombie.Value]:Clone()
	
	self:_morph()
	return self
end

function Zombie:_morph()
	self._char = self._zombieModel
	self._zombieModel.Parent = workspace
end

return Zombie

Humanoid:ApplyDescription is what you are looking for. You need to get the HumanoidDescription from the source model then apply it to the player via the Humanoid method.

https://developer.roblox.com/en-us/api-reference/function/Humanoid/ApplyDescription