Godot Version
4.2.1
Question
i have this code where i capture the mouse movement and try to set the Camera3D transform basis . but it doesn’t set the basis values .
The c++ code :
void Player::updateCamera(double delta)
{
mouse_rotation.x = tilt_input * delta;
mouse_rotation.x = godot::Math::clamp(mouse_rotation.x, ktiltLowerLimit, ktiltUpperLimit);
mouse_rotation.y = rotation_input * delta;
godot::UtilityFunctions::print("mouse_rotation:", mouse_rotation);
player_rotation = godot::Vector3(0.0f, mouse_rotation.y, 0.0f);
camera_rotation = godot::Vector3(mouse_rotation.x, 0.0f, 0.0f);
godot::UtilityFunctions::print("player_rotation:", player_rotation);
godot::UtilityFunctions::print("camera_rotation:", camera_rotation);
CameraController->get_transform().set_basis(godot::Basis::from_euler(camera_rotation));
//CameraController->get_transform().get_basis().xform(godot::Basis::from_euler(camera_rotation));
godot::UtilityFunctions::print("godot::Basis::from_euler(camera_rotation):", godot::Basis::from_euler(camera_rotation));
godot::UtilityFunctions::print("CameraController->get_transform().get_basis():", CameraController->get_transform().get_basis());
this->get_global_transform().set_basis(godot::Basis::from_euler(player_rotation));
godot::UtilityFunctions::print("godot::Basis::from_euler(camera_rotation):", godot::Basis::from_euler(camera_rotation));
godot::UtilityFunctions::print("this->get_global_transform().get_basis():", this->get_global_transform().get_basis());
float r_x = CameraController->get_rotation().x;
float r_y = CameraController->get_rotation().y;
godot::UtilityFunctions::print("r_x:",r_x, "r_y:", r_y);
CameraController->set_rotation(godot::Vector3(r_x, r_y, 0.0f));
godot::UtilityFunctions::print(CameraController->get_rotation());
rotation_input = 0.0f;
tilt_input = 0.0f;
}
This is the log print :
rotation_input:-12.5tilt_input-8
mouse_rotation:(-0.133333, -0.208333, 0)
player_rotation:(0, -0.208333, 0)
camera_rotation:(-0.133333, 0, 0)
godot::Basis::from_euler(camera_rotation):[X: (1, 0, 0), Y: (0, 0.991124, -0.132939), Z: (0, 0.132939, 0.991124)]
CameraController->get_transform().get_basis():[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1)]
godot::Basis::from_euler(camera_rotation):[X: (1, 0, 0), Y: (0, 0.991124, -0.132939), Z: (0, 0.132939, 0.991124)]
this->get_global_transform().get_basis():[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1)]
r_x:0r_y:0
(0, 0, 0)
As you can see the mouse movement values did entered but the CameraController->get_transform().get_basis() havnt changed …
code is converted from :
Thanks