local velocity = 5 function HandleMouse(camera, delta_time) local mouse_sensitivity = 0.2 local xoffset, yoffset = Input:GetMouseOffset() xoffset = xoffset * mouse_sensitivity; yoffset = yoffset * mouse_sensitivity; local pitch, yaw = camera:GetPitchYaw() yaw = yaw + xoffset; pitch = pitch + yoffset; if pitch > 89.0 then pitch = 89.0; if pitch < -89.0 then pitch = -89.0; end end camera:SetPitchYaw(pitch, yaw) end function Update() local delta_time = Time:DeltaTime(); --local inp = Input:GetKeyStatus(GLFW_KEY_W) local transform = Parent:GetTransform() local camera = Parent:GetCamera() local forward = camera:forward() local right = camera:right() local translation HandleMouse(camera, delta_time) if Input:GetKeyStatus(GLFW_KEY_W) == 1 then translation = normalize(forward * vec3:new(1.0, 0.0, 1.0)) * velocity * delta_time end if Input:GetKeyStatus(GLFW_KEY_S) == 1 then translation = normalize(forward * vec3:new(1.0, 0.0, 1.0)) * -velocity * delta_time end if Input:GetKeyStatus(GLFW_KEY_A) == 1 then translation = normalize(right * vec3:new(1.0, 0.0, 1.0)) * -velocity * delta_time end if Input:GetKeyStatus(GLFW_KEY_D) == 1 then translation = normalize(right * vec3:new(1.0, 0.0, 1.0)) * velocity * delta_time end transform:Translate(translation) end