Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local UserInputService = game:GetService("UserInputService")
- local Inst_player = game.Players.LocalPlayer
- local AnimationManager = require(script.AnimationManager)
- local ControlManager = {}
- ControlManager.SpeedMultiplier = 16
- ControlManager.IsRunning = false
- ControlManager.MovementKeysDown = {}
- ControlManager.IsJumping = false
- ControlManager.State = "Idle"
- ControlManager.Camera = nil
- local controls = require(game:GetService("Players").LocalPlayer.PlayerScripts.PlayerModule):GetControls()
- controls:Disable()
- local i = Vector3.new()
- local n = 0;
- game:GetService("RunService"):BindToRenderStep("Movement",Enum.RenderPriority.Camera.Value - 1,function(Num_dt)
- local V3_add = Vector3.new()
- for i,v in pairs(ControlManager.MovementKeysDown) do
- if i == Enum.KeyCode.W then
- V3_add = V3_add+Vector3.new(0,0,-1)
- elseif i == Enum.KeyCode.S then
- V3_add = V3_add+Vector3.new(0,0,1)
- elseif i == Enum.KeyCode.D then
- V3_add = V3_add+Vector3.new(1,0,0)
- elseif i == Enum.KeyCode.A then
- V3_add = V3_add+Vector3.new(-1,0,0)
- end
- end
- if V3_add.Magnitude > 0 then
- ControlManager.IsRunning = true
- local V3_dir = V3_add/(V3_add.Magnitude)
- if ControlManager.Camera then
- print("Begin: "..tostring(n).." - "..tostring(tick()))
- --[[
- -- local CF_hrp = Inst_player.Character.HumanoidRootPart.CFrame
- -- local V3_lv = ControlManager.Camera.Camera.CFrame.lookVector
- --
- --
- --
- --
- -- local CF_pos =
- -- CFrame.new(
- -- CF_hrp.p,
- -- (CFrame.new(CF_hrp.p)*CFrame.new(V3_lv.X,0,V3_lv.Z)).p
- -- )
- -- *CFrame.new(V3_normal*ControlManager.SpeedMultiplier*(Num_dt))
- --
- -- local V3_cPos = Vector3.new(V3_lv.X * V3_normal.X,0,V3_lv.Z * V3_normal.Z)
- --
- -- print((CF_pos.p - i).magnitude,V3_normal)
- -- i = CF_pos.p
- --
- --
- -- local CF_rot = CF_hrp - CF_hrp.p
- --
- -- Inst_player.Character:SetPrimaryPartCFrame(CFrame.new(CF_pos.p)*CF_rot)
- ]]
- local CF_curHrp = Inst_player.Character.HumanoidRootPart.CFrame
- local V3_camLv = ControlManager.Camera.Camera.CFrame.lookVector
- local CF_rot = CFrame.new(Vector3.new(),Vector3.new(V3_camLv.X,0,V3_camLv.Z))
- local CF_hrpPos = CFrame.new(CF_curHrp.p)
- local CF_deltaCF = CFrame.new(V3_dir*ControlManager.SpeedMultiplier*Num_dt)
- local CF_new = CF_hrpPos*CF_rot*CF_deltaCF
- print((CF_new.p - i).magnitude,"\t \t \t",CF_rot.p.magnitude,"\t \t \t",CF_deltaCF.p.magnitude,"\t \t \t",V3_dir)
- i = CF_new.p
- Inst_player.Character:SetPrimaryPartCFrame(CF_new)
- --Inst_player:Move(V3_dir,true)
- print("End: "..tostring(n).." - "..tostring(tick()))
- n = n + 1
- end
- else
- ControlManager.IsRunning = false
- end
- end)
- game:GetService("RunService").RenderStepped:Connect(function()
- if ControlManager.IsRunning == false and ControlManager.IsJumping == false and ControlManager.State ~= "Idle" then
- ControlManager.State = "Idle"
- AnimationManager:playAnimation("IdleAnim")
- elseif ControlManager.IsRunning and ControlManager.IsJumping == false and ControlManager.State ~= "Running" then
- ControlManager.State = "Running"
- AnimationManager:playAnimation("RunAnim")
- elseif ControlManager.IsJumping and ControlManager.State ~= "Jumping" then
- ControlManager.State = "Jumping"
- AnimationManager:playAnimation("JumpAnim")
- end
- game.ReplicatedStorage.HumanoidPropertyChanged:FireServer("State",ControlManager.State)
- end)
- UserInputService.InputBegan:Connect(function(Inst_input,Bool_gp)
- if Bool_gp == false then
- if Inst_input.UserInputType == Enum.UserInputType.Keyboard then
- if Inst_input.KeyCode == Enum.KeyCode.W or Inst_input.KeyCode == Enum.KeyCode.S or Inst_input.KeyCode == Enum.KeyCode.D or Inst_input.KeyCode == Enum.KeyCode.A then
- ControlManager.MovementKeysDown[Inst_input.KeyCode] = true
- elseif Inst_input.KeyCode == Enum.KeyCode.Space and ControlManager.IsJumping == false then
- game.Players.LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
- ControlManager.IsJumping = true
- repeat wait() print(game.Players.LocalPlayer.Character.Humanoid:GetState()) until game.Players.LocalPlayer.Character.Humanoid:GetState() == Enum.HumanoidStateType.Landed
- ControlManager.IsJumping = false
- end
- end
- end
- end)
- UserInputService.InputEnded:Connect(function(Inst_input,Bool_gp)
- if Bool_gp == false then
- if Inst_input.UserInputType == Enum.UserInputType.Keyboard then
- if Inst_input.KeyCode == Enum.KeyCode.W or Inst_input.KeyCode == Enum.KeyCode.S or Inst_input.KeyCode == Enum.KeyCode.D or Inst_input.KeyCode == Enum.KeyCode.A then
- ControlManager.MovementKeysDown[Inst_input.KeyCode] = nil
- end
- end
- end
- end)
- function ControlManager:createCamera()
- ControlManager.Camera = require(script.Class_Camera).new()
- ControlManager.Camera:turnOn()
- -- local Inst_p = Instance.new("Part")
- -- Inst_p.Name = "hi"
- -- Inst_p.Size = Vector3.new(.1,.1,300)
- -- Inst_p.CanCollide = false
- -- local Inst_w = Instance.new("Weld")
- -- Inst_w.Part0 = ControlManager.Camera.CameraCenter
- -- Inst_w.Part1 = Inst_p
- --
- -- Inst_w.C0 = CFrame.new(0,0,-15)
- --
- -- Inst_p.Parent = workspace
- -- Inst_w.Parent = Inst_w.Part0
- -- return Inst_p
- end
- return ControlManager
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement