feat: changed camera rotation speed
This commit is contained in:
parent
d456634061
commit
988bd53159
|
@ -68,17 +68,18 @@ void TunnelsPlayer::process_mouse_location(double delta_time) {
|
||||||
|
|
||||||
void TunnelsPlayer::process_camera_rotation(double delta_time) {
|
void TunnelsPlayer::process_camera_rotation(double delta_time) {
|
||||||
Vector3 rotation = this->get_global_rotation();
|
Vector3 rotation = this->get_global_rotation();
|
||||||
float const y_multiplier = std::max(TunnelsPlayer::ROTATION_Y_MIN_INFLUENCE, this->mouse_location.y); // the influence of the mouse's y position on the rotation speed
|
// the influence of the mouse's y position on the rotation speed
|
||||||
|
float const y_multiplier = std::max(TunnelsPlayer::ROTATION_Y_MIN_INFLUENCE, this->mouse_location.y);
|
||||||
// rotate the camera when the mouse is close to the edge of the screen
|
// rotate the camera when the mouse is close to the edge of the screen
|
||||||
if(this->mouse_location.x < TunnelsPlayer::ROTATION_MARGIN) {
|
if(this->mouse_location.x < TunnelsPlayer::ROTATION_MARGIN) {
|
||||||
// normalized measurement of how far into the rotation margin the mouse is
|
// normalized measurement of how far into the rotation margin the mouse is
|
||||||
float const normalized{1.f - (this->mouse_location.x / TunnelsPlayer::ROTATION_MARGIN)};
|
float const normalized{1.f - (this->mouse_location.x / TunnelsPlayer::ROTATION_MARGIN)};
|
||||||
// rotate based on delta time and use a curve to make the rotation zone feel more natural
|
// rotate based on delta time and use a curve to make the rotation zone feel more natural
|
||||||
rotation.y += delta_time * TunnelsPlayer::ROTATION_SPEED * camera_rotation_ramp->sample(normalized) * y_multiplier;
|
rotation.y += delta_time * double(TunnelsPlayer::ROTATION_SPEED * camera_rotation_ramp->sample(normalized) * y_multiplier);
|
||||||
}
|
}
|
||||||
if(this->mouse_location.x > 1.f - TunnelsPlayer::ROTATION_MARGIN) {
|
if(this->mouse_location.x > 1.f - TunnelsPlayer::ROTATION_MARGIN) {
|
||||||
float const normalized{((this->mouse_location.x - (1.f - TunnelsPlayer::ROTATION_MARGIN)) / TunnelsPlayer::ROTATION_MARGIN)};
|
float const normalized{((this->mouse_location.x - (1.f - TunnelsPlayer::ROTATION_MARGIN)) / TunnelsPlayer::ROTATION_MARGIN)};
|
||||||
rotation.y -= delta_time * TunnelsPlayer::ROTATION_SPEED * camera_rotation_ramp->sample(normalized) * y_multiplier;
|
rotation.y -= delta_time * double(TunnelsPlayer::ROTATION_SPEED * camera_rotation_ramp->sample(normalized) * y_multiplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
// wrap rotation to avoid going into invalid numbers
|
// wrap rotation to avoid going into invalid numbers
|
||||||
|
@ -156,7 +157,7 @@ Ref<Curve> TunnelsPlayer::get_camera_rotation_ramp() const {
|
||||||
return this->camera_rotation_ramp;
|
return this->camera_rotation_ramp;
|
||||||
}
|
}
|
||||||
|
|
||||||
float const TunnelsPlayer::ROTATION_SPEED{6.f};
|
float const TunnelsPlayer::ROTATION_SPEED{0.5f};
|
||||||
float const TunnelsPlayer::ROTATION_Y_MIN_INFLUENCE{7.f};
|
float const TunnelsPlayer::ROTATION_Y_MIN_INFLUENCE{7.f};
|
||||||
float const TunnelsPlayer::ROTATION_MARGIN{0.4f};
|
float const TunnelsPlayer::ROTATION_MARGIN{0.4f};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue