package main import ( "math" rl "github.com/gen2brain/raylib-go/raylib" ) func UpdateCamera(camera *rl.Camera3D, player rl.Vector3, deltaTime float32) { // Update camera based on mouse wheel wheelMove := rl.GetMouseWheelMove() if wheelMove != 0 { cameraDistance += -wheelMove * 5 if cameraDistance < 10 { cameraDistance = 10 } if cameraDistance > 250 { cameraDistance = 250 } } // Orbit camera around the player using arrow keys if rl.IsKeyDown(rl.KeyRight) { cameraYaw += 100 * deltaTime } if rl.IsKeyDown(rl.KeyLeft) { cameraYaw -= 100 * deltaTime } if rl.IsKeyDown(rl.KeyUp) { cameraPitch -= 50 * deltaTime if cameraPitch < 20 { cameraPitch = 20 } } if rl.IsKeyDown(rl.KeyDown) { cameraPitch += 50 * deltaTime if cameraPitch > 85 { cameraPitch = 85 } } // Calculate the new camera position using spherical coordinates cameraYawRad := float64(cameraYaw) * rl.Deg2rad cameraPitchRad := float64(cameraPitch) * rl.Deg2rad cameraPos := rl.Vector3{ X: player.X + cameraDistance*float32(math.Cos(cameraYawRad))*float32(math.Cos(cameraPitchRad)), Y: player.Y + cameraDistance*float32(math.Sin(cameraPitchRad)), Z: player.Z + cameraDistance*float32(math.Sin(cameraYawRad))*float32(math.Cos(cameraPitchRad)), } // Update the camera's position and target camera.Position = cameraPos camera.Target = rl.NewVector3(player.X, player.Y, player.Z) }