Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Manipulating string to object. Is this possible?

What i try to do is manipulating an string to a object location.

local level = game.Workspace["Shop-Leaderboard"].lvl.Value
local map = ("Map" .. level)
local current_level = ("game." .. map)
local current_camera = (current_level .. ".cam")
print(current_level)
print(current_camera)

This part of the script returns the following.

game.Map0
game.Map0.cam

Those elements are present in my tree. This is correct. Now I want to use this brick to set my camera positiosn

local function onRenderStep()
	local character = player.Character
	if character then
		local humanoidRootPart = game.Workspace.Map[level].cam
		if humanoidRootPart then
			local playerPosition = humanoidRootPart.Position
			local cameraPosition = playerPosition + OFFSET
			camera.CoordinateFrame = CFrame.new(cameraPosition, playerPosition)
		end
	end

But obvious this does not work. Cause I use a string instead of an object. How can i change this string "current_level" or "game.Workspace.Map[level].cam" to an object type?

Here is the whole script:

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
 
local OFFSET = Vector3.new(40,40,40)
local FIELD_OF_VIEW = 40
 
local player = Players.LocalPlayer
local camera = game.Workspace.CurrentCamera
 
camera.FieldOfView = FIELD_OF_VIEW

local level = game.Workspace["Shop-Leaderboard"].lvl.Value
local map = ("Map" .. level)
local current_level = ("game." .. map)
local current_camera = (current_level .. ".cam")
print(current_level)
print(current_camera)

 
local function onRenderStep()
	local character = player.Character
	if character then
		local humanoidRootPart = game.Workspace.Map[level].cam --character:FindFirstChild("HumanoidRootPart")
		if humanoidRootPart then
			local playerPosition = humanoidRootPart.Position
			local cameraPosition = playerPosition + OFFSET
			camera.CoordinateFrame = CFrame.new(cameraPosition, playerPosition)
		end
	end
end
 
RunService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, onRenderStep)

1 answer

This discussion is preserved as it was. New answers, comments, and votes are closed.