Search the Community
Showing results for tags 'clamp'.
-
Hi. I would like to make the rotation of the gun at -45 and +45 (or less) degrees relative to that of the camera. When I limit the values, it only works according to the world coordinate. For example, when I turn a full turn to the left, I have to turn a full turn right again so that the gun rotates in the right direction. I want to do a gun control like Insurgency game. How can I fix this? Here is my code. float currentTime = Time::GetCurrent(); Vec2 currentMousePos = Window::GetCurrent()->GetMousePosition(); Window::GetCurrent()->SetMousePosition(Math::Round(Context::GetCurrent()->GetWidth() / 2), Math::Round(Context::GetCurrent()->GetHeight() / 2)); Vec2 centerPos = Window::GetCurrent()->GetMousePosition(); currentMousePos.x = Math::Round(currentMousePos.x); currentMousePos.y = Math::Round(currentMousePos.y); mouseDifference.x = Math::Curve(currentMousePos.x - centerPos.x, mouseDifference.x, 2 / Time::GetSpeed()); mouseDifference.y = Math::Curve(currentMousePos.y - centerPos.y, mouseDifference.y, 2 / Time::GetSpeed()); camRotation.x = Math::Clamp(camRotation.x + mouseDifference.y / mouseSensitivity, -90, 90); camRotation.y = camRotation.y + (mouseDifference.x / mouseSensitivity); hurtOffset.x = Math::Inc(0, hurtOffset.x, 2 * Time::GetSpeed()); hurtOffset.y = Math::Inc(0, hurtOffset.y, 2 * Time::GetSpeed()); smoothedHurtOffset.x = Math::Curve(hurtOffset.x, smoothedHurtOffset.x, 3); smoothedHurtOffset.y = Math::Curve(hurtOffset.y, smoothedHurtOffset.y, 3); bobOffset.x = Math::Inc(0, bobOffset.x, Time::GetSpeed() * 0.8f); bobOffset.y = Math::Inc(0, bobOffset.y, Time::GetSpeed()); smoothedBobOffset.x = Math::Curve(bobOffset.x, smoothedBobOffset.x, 25); smoothedBobOffset.y = Math::Curve(bobOffset.y, smoothedBobOffset.y, 25); weaponViewRot.x = Math::Clamp(camRotation.x + mouseDifference.y / mouseSensitivity, -45, 45); weaponViewRot.y = Math::Clamp(camRotation.y + mouseDifference.x / mouseSensitivity, -45, 45); smoothWeaponViewRot.x = Math::Curve(weaponViewRot.x, smoothedHurtOffset.x, 5); smoothWeaponViewRot.y = Math::Curve(weaponViewRot.y, smoothedHurtOffset.x, 5); playerCamera->SetRotation(camRotation + smoothedBobOffset + smoothedHurtOffset); testWeapon->entity->SetRotation(camRotation + smoothWeaponViewRot); if (Window::GetCurrent()->MouseDown(1)) { testWeapon->weaponShoot(); }