I would like to do this but it would take too long, however, there is a model you can download here: https://devforum.roblox.com/t/rendering-the-character-with-a-viewportframe/241369/31
This is the code if for some reason it doesn't work for you:
local script inside the gui with the viewport frame:
local RunService = game:GetService('RunService')
local UserInputService = game:GetService("UserInputService")
local instance,newRay = Instance.new,Ray.new
local v2,v3,cf,udim2 = Vector2.new,Vector3.new,CFrame.new,UDim2.new
local insert,random,abs = table.insert,math.random,math.abs
local Player = game.Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local ViewPort = script.Parent.ViewportFrame
local Offset = cf(0,1,-6)
local Camera = instance("Camera")
ViewPort.CurrentCamera = Camera
local ValidClasses = {
["MeshPart"] = true; ["Part"] = true; ["Accoutrement"] = true;
["Pants"] = true; ["Shirt"] = true;
["Humanoid"] = true;
}
local function RenderHumanoid(Model, Parent, MainModel)
local ModelParts = Model:GetDescendants()
for i=1, #ModelParts do
local Part = ModelParts[i]
if ValidClasses[Part.ClassName] then
local a = Part.Archivable
Part.Archivable = true
local RenderClone = Part:Clone()
Part.Archivable = a
if Part.ClassName == "MeshPart" or Part.ClassName == "Part" then
PartUpdater = RunService.Heartbeat:Connect(function()
if Part then
RenderClone.CFrame = Part.CFrame
else
RenderClone:Destroy()
PartUpdater:Disconnect()
end
end)
elseif Part:IsA("Accoutrement") then
PartUpdater = RunService.Heartbeat:Connect(function()
if Part then
if RenderClone.Handle then
RenderClone.Handle.CFrame = Part.Handle.CFrame
end
else
RenderClone:Destroy()
PartUpdater:Disconnect()
end
end)
elseif Part.ClassName == "Humanoid" then
RenderClone:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Running, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.RunningNoPhysics, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.StrafingNoPhysics, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.GettingUp, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Landed, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Flying, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Freefall, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.PlatformStanding, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Swimming, false)
RenderClone:SetStateEnabled(Enum.HumanoidStateType.Physics, false)
end
RenderClone.Parent = Parent
end
end
end
wait(1)
local function Render()
ViewPort:ClearAllChildren()
local Char = instance("Model")
Char.Name = ""
Char.Parent = ViewPort
RenderHumanoid(Character,Char)
end
Character.DescendantAdded:Connect(Render)
Character.DescendantRemoving:Connect(Render)
Render()
CameraUpdater = RunService.Heartbeat:Connect(function()
if Character.HumanoidRootPart then
Camera.CFrame = cf(Character.HumanoidRootPart.CFrame:toWorldSpace(Offset).p, Character.HumanoidRootPart.CFrame.p)
end
end)
3 comments
Thanks, this is what I needed. However, do you know how I could make it where when the player can hold down the LeftMouseButton and move it around in order to also move the character around? So they can see the back, side, ETC?
Unfortunately, I do not know how to do that. I could look into it in the future and reply if I do find a way to do that.
Okay, thanks for telling me. For now I'll look into the script and see what alterations I need to be able to do it.