Consider adapting a simple controller like this as the base for your character controller (It’s in 2d but the same principles apply for 3D).
Then, if you want a rocket jump, it would be very similar to a jump, just instead of just changing the velocity in the y axis, you would change it in the x and z as well.
if is_on_floor(): #May or may not need this check depending on what you want in your game
velocity.y = 0
velocity += rocket_speed * rocket_angle
Where rocketspeed is a predefined float value dictating the power of the rocket, and rocketangle is a normalized vector3 which dictates the launch direction.
Hope this helps, I’m happy to answer any more questions you may have.
Could you elaborate more on that Vector3? Like how I’d assign values to it if possible. Also thanks in advance, kind of a novice here.
Makubx | 2021-04-22 15:37
A vector3 contains an x, y, and z value. By giving values for x, y, and z, you can use this to determine the “direction” of the vector.
Vector3(1, 0, 0) is a vector pointing at the positive x direction
Vector3(0, 1, 0) is a vector pointing upwards in the y direction
Vector3(1, 1, 0) is a vector pointing both in the forward x and positive y direction. (And as x and y are equal this will be at a 45 degree angle)
The only issue with the last one is that - because of Pythagoras’ theorem - it has a length of sqrt(2), not 1. By “normalizing” the vector, this essentially turns this vector into a length of 1, so the speed will remain constant for any direction.
Syntax in godot is Vector3(x, y, z).normalized()
Hope that clarified a little
RedBlueCarrots | 2021-04-23 03:21