Performs a basic check and returns whether the direction passed as a parameter is diagonal. This function is used internally by the normalize_diagonal_vector function.
Generate a random angle between a range provided, the unit is on degrees
Generate random directions from an origin Vector2
This function generate a n random directions in a Array[Vector2] format from an starting vector point defining the min and max angles:
๐จ Frame Freeze
To achieve a slow-motion effect you can use this function that receives the time scale (as time goes by frame by frame) and the duration of the freeze in seconds.
Here you can see an example that trigger a frame freeze when a character jumps:
Frame freeze example 1 sec
Generate random string
You can use this function to generate a random string with a specified length and character list, which is set to its default value of "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
For instance, you can utilize this function to create invitation codes for your multiplayer rooms:
Validate an url
As the String class from Godot lack this validation you can use the following one:
Signals
frame_freezed signal is emitted when the effect starts in case you want to listen to it to perform other actions such as triggering animations.
# Between 90ยบ and 120ยบ
GodotEssentialsHelpers.generate_random_angle(90, 120) # 117ยบ
# 5 Random directions from Vector down (0, 1) between 90ยบ and 180ยบ
GodotEssentialsHelpers.generate_random_directions_on_angle_range(Vector2.DOWN, 90, 180, 5)
# 25 random directions from the actual player global position between 0 and 360ยบ
GodotEssentialsHelpers.generate_random_directions_on_angle_range(player.global_position, 0, 360, 25)
# Time scale 0.05
# Duration 0.5 sec
GodotEssentialsHelpers.frame_freeze(0.05, 0.5)
func handle_jump():
if Input.is_action_just_pressed("jump"):
velocity_component_2d.jump()
GodotEssentialsHelpers.frame_freeze(0.05, 1)
var invitation_code: String = GodotEssentialsHelpers.generate_random_string(4, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") # YMZ2