You can write your topic however you want, but you need to answer these questions:
- What do you want to achieve? Keep it simple and clear!
Hello. I made a camera lockon system. I made a scriptable camera and used a lookat Cframe. I’ve got this far but now I’m stumped. I want the z and y axis to behave like the regular camera. only the x axis should be locked. I think i’m saying that righ. The behaviour I want is for the player to be able to zoom out and move their camera up and down like normal. But for the camera to turn with the enemy when locked on.
- What is the issue? Include screenshots / videos if possible!
I don’t know how to do this. I tried to feed it the original camera position. Don’t know if i made a new camera by declaring it scriptable, don’t know if, if not, any of the old behaviours can be accessed. If it is a new camera, I dont know if i need to rescript the ‘scriptable’ camera to behave like the normal one…? I’m hoping that is not true any of that, and it’s just something about the math that i dont know.
- What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I cannot find a topic on this, though i’ve found helpful articles on the original lockon setup.
I would be very grateful in anyone would look at my script and tell me about any step forward i might not know about.
--//[[Variables]]\\--
--[[Services]]--
local TWEEN_SERVICE = game:GetService("TweenService")
--[[Folders]]
local EVENTS = script.Parent:WaitForChild("Events")
--[[Camera]]--
local Camera = workspace.CurrentCamera
--[[Character]]--
local char = script.Parent
local Head = char:WaitForChild("Head")
local Root = char:WaitForChild("HumanoidRootPart")
local enemytobefaced = nil
local combatData = char:WaitForChild("combatData")
--[[Scripting]]--
local lockedOn = false
--[[Utility]]--
-- FOR THE WHILE LOOP CONTINUOUSLY CHECKING
local function renderWait()
game:GetService("RunService").RenderStepped:Wait()
return true
end
--CONDITIONS
local function conditions()
if not lockedOn then return end
return true
end
-- Functions
local function lockOnCamera()
Camera.CameraType = Enum.CameraType.Scriptable
while renderWait() do
if not conditions() then
break
end
local lockOnCameraPosition = Vector3.new(Root.Position.X, Root.Position.Y, Root.Position.Z)
Camera.CFrame = CFrame.lookAt(Root.Position, enemytobefaced.HumanoidRootPart.CFrame.Position) * CFrame.new(1,5,20)
end
end
EVENTS.LockOnToggle.Event:Connect(function(target)
if target then
lockedOn = true
enemytobefaced = target
lockOnCamera()
else
lockedOn = false
Camera.CameraType = Enum.CameraType.Custom
end
end)
Thank you!!