So I am writing this 3rd person camera script for my game and wan't it to have a lock on target feature for boss fights etc etc... I got it working but the thing is: when you go around the target your player is not vissible... Can someone please help me cause I am going crazy...
Here is my scipt:
local cameraLocked = true local enemy = workspace.StarterCharacter.HumanoidRootPart local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local Camera = workspace.Camera local Player = Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart") local CameraAngleX, CameraAngleY = 0,0 local CameraCFrame,CameraFocus,StartCFrame local CameraOffset = Vector3.new(1,3,9.5) local Movement = Enum.UserInputType.MouseMovement RunService.RenderStepped:Connect(function() if cameraLocked == false then if Camera.CameraType ~= Enum.CameraType.Scriptable then Camera.CameraType = Enum.CameraType.Scriptable end StartCFrame = CFrame.new((HumanoidRootPart.CFrame.Position)) * CFrame.Angles(0, math.rad(CameraAngleX), 0) * CFrame.Angles(math.rad(CameraAngleY), 0, 0) CameraCFrame = StartCFrame:ToWorldSpace(CFrame.new(CameraOffset.X, CameraOffset.Y, CameraOffset.Z)) CameraFocus = StartCFrame:ToWorldSpace(CFrame.new(CameraOffset.X, CameraOffset.Y, -10000)) Camera.CFrame = CFrame.new(CameraCFrame.Position, CameraFocus.Position) else if Camera.CameraType ~= Enum.CameraType.Scriptable then Camera.CameraType = Enum.CameraType.Scriptable end StartCFrame = CFrame.new((HumanoidRootPart.CFrame.Position)) * CFrame.Angles(0, math.rad(CameraAngleX), 0) * CFrame.Angles(math.rad(CameraAngleY), 0, 0) CameraCFrame = StartCFrame:ToWorldSpace(CFrame.new(0, 5, 9.5)) CameraFocus = StartCFrame:ToWorldSpace(CFrame.new(CameraOffset.X, CameraOffset.Y, -10000)) Camera.CFrame = CFrame.new(CameraCFrame.Position, enemy.Position) end end) UserInputService.InputBegan:Connect(function(InputObject) if cameraLocked == false then local UserInputType = InputObject.UserInputType if UserInputService.MouseBehavior ~= Enum.MouseBehavior.LockCenter then UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter end end end) UserInputService.InputChanged:Connect(function(InputOject) if cameraLocked == false then local UserInputType= InputOject.UserInputType if(UserInputType== Movement)then local Delta = InputOject.Delta CameraAngleX = CameraAngleX-Delta.X CameraAngleY = math.clamp(CameraAngleY-Delta.Y, -75, 75) end else end end)
Thanks